画像クロッパーを使用していますが、フォームの検証に問題があります。GIF画像をアップロードするときにフォームが検証されますが、私が試した他の形式では次の例外が発生します:
Upload a valid image. The file you uploaded was either not an image or a corrupted image.
形
<form enctype="multipart/form-data" method="post" action="/pic/">{% csrf_token %}
{{ form.as_p }}
<p><input type="submit" value="View uploaded image"></p>
<input type="hidden" name="stage" value="crop">
</form>
意見
if request.method == 'POST':
form = ProfilePicForm(request.POST, request.FILES)
if form.is_valid():
*do stuff*
else:
logger.debug('Form errors == [%s]' % form.errors)
PILをインストールする前に(easy_installを使用して)libjpeg-devを(apt-getを使用して)インストールしました。最初は、これは libjpeg-dev または PIL のいずれかが正しくインストールされていないことが原因ではないかと考えましたが、png などの他の形式でも問題は解決しませんか? この問題は、実際には png 画像でも発生します。jpeg デコーダーの問題は発生していないので、そうではないと考えていますが、よくわかりません。また、django 開発サーバーを使用しています。
アップデート
PILの再インストールを試みることにしました。PIL インストール フォルダー
/usr/local/lib/python2.7/dist-packages/PIL
と PIL.pth ファイル (同じ dist-packages フォルダー内) を削除しました。を使用して setup.py スクリプトを実行しましたsudo python setup.py install
。次に、selftest.py スクリプトを実行しましたが、最初のテストで失敗しました。
--------------------------------------------------------------------
PIL 1.1.7 TEST SUMMARY
--------------------------------------------------------------------
Python modules loaded from ./PIL
Binary modules loaded from ./PIL
--------------------------------------------------------------------
--- PIL CORE support ok
*** TKINTER support not installed
*** JPEG support not installed
*** ZLIB (PNG/ZIP) support not installed
*** FREETYPE2 support not installed
--- LITTLECMS support ok
--------------------------------------------------------------------
Running selftest:
*****************************************************************
Failure in example:
try:
_info(Image.open(os.path.join(ROOT, "Images/lena.jpg")))
except IOError, v:
print v
from line #24 of selftest.testimage
Expected: ('JPEG', 'RGB', (128, 128))
Got: decoder jpeg not available
1 items had failures:
1 of 57 in selftest.testimage
***Test Failed*** 1 failures.
*** 1 tests of 57 failed.
上記のサポートされていないモジュールで PIL を動作させる方法がわかりません。zlib1g-dev、libfreetype6-dev、liblcms1-dev、libjpeg62-dev、およびライブラリ自体がシステムにインストールされていることを確認できます。これらを apt-get でインストールしようとすると、既に最新バージョンを持っていると表示されるためです。 .