尝试JPEG导出时为TypeError

时间:2013-03-24 21:45:01

标签: python python-imaging-library

我正在尝试使用以下代码导出给定图像的已调整大小的JPEG(省略下载部分,因为它工作正常):

basewidth = 400 # user-defined variable
wpercent = (basewidth/float(img.size[0]))
hsize = int((float(img.size[1])*float(wpercent)))
img = img.resize((basewidth,hsize), Image.ANTIALIAS)
theitemishere = "/home/myusername/public_html/resizer/" + filename
img.save(theitemishere + extension, extension_caps)

但是,在保存新图像(这里是追溯)时,我收到以下错误:

  File "/home/myusername/public_html/cgi-bin/PIL/Image.py", line 1467, in save
    save_handler(self, fp, filename)
  File "/home/myusername/public_html/cgi-bin/PIL/JpegImagePlugin.py", line 557, in _save
    ImageFile._save(im, fp, [("jpeg", (0,0)+im.size, 0, rawmode)])
  File "/home/myusername/public_html/cgi-bin/PIL/ImageFile.py", line 466, in _save
    e = Image._getencoder(im.mode, e, a, im.encoderconfig)
  File "/home/myusername/public_html/cgi-bin/PIL/Image.py", line 395, in _getencoder
    return encoder(mode, *args + extra)
TypeError: function takes at most 11 arguments (13 given)

有关为何发生这种情况的任何想法?

FWIW,我无法在服务器上安装PIL模块,这就是为什么我把它作为cgi-bin的子目录。

2 个答案:

答案 0 :(得分:7)

我有同样的问题并解决了它。写这个解决方案,因为我觉得上面的答案对于其他有同样问题并寻找解决方案的人来说不够描述

我遇到了这个问题,因为我安装了PIL n Pillow。所以不得不卸载其中一个。这解决了这个问题。

感谢。

答案 1 :(得分:1)

您可能希望跳过所有内容,然后从加载图片开始,然后立即将其保存为:

img.save("/home/myusername/public_html/resizer/file.jpg", format="JPEG")

看看会发生什么。如果它有效,那么添加更多细节,调整大小和其他东西。

啊,不要忘记检查保存文件夹的写权限,因为web-server通常以不同的用户名运行。