Django ImageField“上传有效图像。您上传的文件不是图像或损坏的图像。”

时间:2011-09-30 06:18:51

标签: python django virtualenv

我安装了PIL,但每当我尝试通过Django Admin为我的模型将.png文件上传到图像字段时,我都会收到此错误:

“上传有效图片。您上传的文件不是图片或图片已损坏。”

其他图像类型工作正常。我尝试了几种不同的PNG文件。

我已经尝试在安装pypng,libpng-dev等之后重建PIL而且我在ubuntu服务器上。

3 个答案:

答案 0 :(得分:7)

通过使用pip安装“枕头”而不是“pil”来解决这个问题,这可以轻松部署到virtualenv。

答案 1 :(得分:3)

当你编译PIL时,它应该说它是否已经使用PNG支持进行编译,但是如果你自己安装它有问题,我建议你使用ubuntu附带的版本。这是奇怪的命名,但很容易安装:

apt-get install python-imaging

答案 2 :(得分:0)

我发现在Ubuntu上构建PIL可能会导致问题,因为libpng位于非标准位置,而PIL无法找到它。

在已下载PIL的文件夹中,编辑setup.py。找到以下行:

JPEG_ROOT = None

并将其更改为

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

然后重建PIL并检查包含PNG支持的末尾附近的消息。

我知道当您想要添加PNG支持时修改JPEG_ROOT很奇怪,但setup.py也会在JPEG_ROOT中查找libpng