Django ImageField “上传有效图像。您上传的文件不是图像或图像已损坏。”
我已经安装了PIL这个库,但是每次我通过Django后台上传一个.png格式的图片时,都会出现这个错误:
“上传一个有效的图片。你上传的文件要么不是图片,要么是损坏的图片。”
其他格式的图片都能正常上传。我试过好几种不同的PNG文件。
我还在安装了pypng、libpng-dev等之后尝试重新安装PIL,并且我是在Ubuntu服务器上操作的。
3 个回答
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
。
7
这个问题是通过用pip安装“pillow”来解决的,而不是安装“pil”。这样做可以更方便地在虚拟环境中使用。
3
当你编译PIL的时候,它应该会告诉你是否支持PNG格式。如果你在自己安装的时候遇到问题,我建议你使用Ubuntu自带的版本。这个版本的名字有点奇怪,但安装起来很简单,你可以用下面的命令:
apt-get install python-imaging