1

次のコードを使用して、特定の画像のサイズ変更された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のサブディレクトリとしてPILモジュールを使用しています。

4

2 に答える 2

7

私も同じ問題を抱えて解決しました。上記の答えは、同じ問題を抱えて解決策を探している他の人にとって十分に説明的ではないと感じたので、この解決策を書く

両方のPILnPillowをインストールしていたため、この問題が発生しました。そのため、そのうちの1つをアンインストールする必要がありました。それで問題は解決しました。

ありがとう。

于 2013-05-09T04:35:39.447 に答える
1

すべてをスキップして、画像の読み込みから始めて、すぐに次のように保存することをお勧めします。

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

何が起こるか見てみましょう。それが機能する場合は、詳細、サイズ変更などを追加します。

ああ、そして保存するフォルダの書き込み権限を確認することを忘れないでください。Webサーバーは通常異なるユーザー名で実行されるためです。

于 2013-03-25T01:28:57.150 に答える