私はDjangoのPIL(Python Image Library)に大きな問題があり、多くの問題を抱えており、問題の根本原因を突き止めることができませんでした。JPEGのDjango ImageField問題
この問題は、Django管理者のImageFieldを通してJPEG画像をアップロードできないことに本質的に壊れています。しかし、問題はlibjpegをインストールするほど簡単ではありません。
最初に、PIL(Buildoutを介して)をインストールして、JPEGサポートが利用できなかったため、libjpegをインストールしていないことを認識しました。
自分でサーバをセットアップしていないので、私はそれがインストールされていないと仮定し、ソースからlibjpeg 8をコンパイルしました。これは私の/usr/local/lib/ディレクトリにありました。私はBuildoutファイルをクリアし、すべてを再構築しました。今回はPILがコンパイルされたときにJPEGをサポートしていました。しかし、私はDjango管理者に行き、ImageFieldを使ってJPEGをアップロードしようとしました。 「有効な画像をアップロードしてください。あなたがアップロードしたファイルが画像でも破損した画像でもない」というエラーが表示されます。ちょうど私がDjanoシェルを開いて、以下を実行したテストとして:
> import Image
> i = Image.open("/absolute_path/file.jpg")
> print i
<JpegImagePlugin.JpegImageFile image mode=RGB size=940x375 at 0x7F908C529BD8>
これはエラーなしで実行され、PILがJPEGのを開くことができることを示しています。
いくつかの読み取りを行った後、私はこのスレッドに遭遇:PHPはまたのlibjpegを使用し、Djangoの前にロードされ、そしてそのためのロードが前に6.2のlibjpegのよう Is it possible to control which libraries apache uses?
が見えます。 lsofをを使用する場合は、showです:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 2561 www-data mem REG 202,1 146032 639276 /usr/lib/libjpeg.so.62.0.0
だから私の考えは、私が6.2のlibjpeg使用しなければならないということです。そこで私は/usr/local/libディレクトリにあるlibjpegを削除しました。 PILのインストール手順を読み直した後、PILに必要なlibjpeg用のdev/headerファイルがないかもしれないことに気がつきました。だから私はまた、aptitudeアンインストーラ(sudo aptitude remove libjpeg62)を使ってlibjpegをアンインストールしました。次に、PILが必要なヘッダファイルがあることを確認するために、aptitudeを使用してlibjpegをインストールしました。(sudo aptget install libjpeg62-dev)。
ここから私は自分のBuildoutディレクトリを削除し、BuildRoutはPILを再インストールしました。もう一度、私はJPEGをサポートしています。現在、libjpeg62を使用しています。
私はDjango Adminでテストに行きます。 JPEGはまだサポートされていません。だから私は一般的にJPEGサポートをテストし、例外が処理されなかったかどうか、それがどんな種類のエラーを投げるかを見たいと思っていました。だから、私のホームページビューで、私はJPEGの画像を開くには、次のコードを追加しました:
import Image
i = Image.open("/absolute_path/file.jpg")
v = i.verify()
その後、私はちょうど簡単に出力を確認するためにHTMLビューに私を渡します。これらの変更をサーバーに展開して再起動します。私は、エラーが表示され、次の出力を得ることがない驚いています:
{{ i }} - <JpegImagePlugin.JpegImageFile image mode=RGB size=940x375 at 0x7F908C529BD8>
{{ v }} - None
は、だから私は本当に混乱しています。この時点で:管理者がすることはできませんが
- はなぜ成功したJPEGを開くことができますか?
- 私は何かが欠けていますか?これはlibjpegの問題ではありませんか?
- libjpegに問題がなければ、どうして問題なくPNGをアップロードできますか?
何か助けていただければ幸いですが、私は2日間デバッグしています。適性を通じてインストール6.2のlibjpeg(ビルドアウトかかわらインストール) 1. Rackspaceのクラウドサーバ 2. Ubuntuの10.04 3.ジャンゴ1.2.3(ビルドアウトかかわらインストール) 4. PIL 1.1.7 5.(:
セットアップ私は、本当の問題は、ことになったのかわからないです。投稿後、私はこの5分を解決するだろうと、