2011-09-30 60 views
4

我已經安裝了PIL,但每當我試圖通過Django管理上傳.png文件到圖像領域我的模型,我得到這個錯誤:Django ImageField「上傳有效的圖片,您上傳的文件不是圖片或損壞的圖片。」

「上傳有效的圖片您上傳的文件要麼不是圖像或損壞的圖像。「

其他圖像類型工作正常。我嘗試了幾個不同的PNG文件。

我已經嘗試在安裝pypng,libpng-dev等後重建PIL。並且在ubuntu服務器上。

+0

當您安裝PIL時,您是否確定它看到您的libpng等並確認它具有PNG兼容性? –

回答

2

當你編譯PIL時,應該說它是否已經用PNG支持編譯,但是如果你自己安裝它有問題,我會建議你使用ubuntu自帶的版本。它的奇怪命名,但具有安裝方便:

apt-get install python-imaging 
+0

我需要在虛擬環境中安裝。 – DantheMan

0

我發現,在Ubuntu上建立公益訴訟可能會導致問題,因爲libpng是一個非標準的位置,PIL無法找到它。

在PIL下載到的文件夾中,編輯setup.py。查找以下行:

JPEG_ROOT = None 

,並更改爲

JPEG_ROOT = '/usr/lib/i386-linux-gnu/' 

然後重建PIL並檢查該PNG支持包括接近尾聲的消息。

我知道這是奇怪的修改JPEG_ROOT,當你想添加PNG支持,但setup.py將查找JPEG_ROOTlibpng了。

6

這個問題是通過使用pip來安裝「pillow」而不是「pil」來解決的,它允許輕鬆部署到virtualenv。

+0

它工作:)感謝哥們。 – Ahsan