我安装了PIL,但每当我尝试通过Django Admin为我的模型将.png文件上传到图像字段时,我都会收到此错误:
“上传有效图片。您上传的文件不是图片或图片已损坏。”
其他图像类型工作正常。我尝试了几种不同的PNG文件。
我已经尝试在安装pypng,libpng-dev等之后重建PIL而且我在ubuntu服务器上。
答案 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
。