尝试导出JPEG时出现TypeError

1 投票
2 回答
1760 浏览
提问于 2025-04-17 20:10

我正在尝试使用以下代码导出调整大小后的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)

你们觉得这是什么原因呢?

顺便说一下,我无法在服务器上安装PIL模块,所以我把它放在了cgi-bin的子目录里。

2 个回答

1

你可以直接跳过其他内容,先从加载图片开始,然后立刻保存它,代码如下:

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

看看会发生什么。如果能成功,那就再添加一些细节,比如调整大小和其他功能。

哦,对了,别忘了检查一下你保存文件的文件夹的写入权限,因为网络服务器通常是以不同的用户名运行的。

7

我也遇到了同样的问题,并且解决了它。写下这个解决方案是因为我觉得上面的回答对其他有相同问题的人来说不够详细,可能找不到解决办法。

我之所以会出现这个问题,是因为我同时安装了PIL和Pillow这两个库。所以我需要卸载其中一个。这样问题就解决了。

谢谢。

撰写回答