NGINX/FastCGI を使用して Ubuntu の virtualenv 内で Django アプリを実行しており、JPG イメージを Django 管理アプリにアップロードしようとしています。
「有効な画像をアップロードしてください。アップロードしたファイルは画像ではないか、破損した画像です。」というエラーが表示されます。GIF 画像をアップロードできるので、問題を引き起こしているのは JPEG だけです。
これが私がこれまでに試したことです:
1) PIL の前に libjpeg62-dev をインストールします。
pip uninstall pil
sudo apt-get libjpeg62-dev
pip install pil
PIL インストールの最後に、次のように表示されます。
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version 1.1.7
platform linux2 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3]
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
*** LITTLECMS support not available
JPEGのサポートがあるようです。また、手動テストを行って検証し、検証しました:
>>> from PIL import Image
>>> trial_image=Image.open("/path/to/my/image.png")
>>> trial_image.verify()
2) 上記のアプローチ #1 と同様ですが、手動で JPG_ROOT を指定します。
pip uninstall pil
sudo apt-get libjpeg62-dev
pip install --no-install pil
vi /path/to/virtualenv/build/PIL/setup.py (JPG_ROOT = libinclude("/usr/lib"))
pip install pil
3) Pillow (PIL フォーク) で運試し
pip uninstall pil
sudo apt-get libjpeg62-dev
pip install pillow
私はDjangoを実行しています.PILをインストールするたびにnginxサービスを停止して開始しようとしています.
これまでのところ、上記のアプローチのいずれも、Ubuntu の Django アプリで上記のエラー メッセージを回避できませんでした。同じDjangoアプリを実行しているローカル開発ボックス(Mac OSX 10.6.5)で同じJPG画像を問題なくアップロードできるので、Ubuntuでの展開に問題があることがわかります。
どんな助けでも大歓迎です!