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

5

我已经安装了PIL,但是每当我尝试通过Django Admin为我的模型上传.png文件到图像字段时,就会出现以下错误:

"上传有效的图像。您上传的文件不是图像或损坏的图像。"

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

我尝试在安装pypng、libpng-dev等之后重新构建PIL,而且我使用的是Ubuntu服务器。


当您安装PIL时,您是否确保它能够看到您的libpng等,并确认它具有PNG兼容性? - Timmy O'Mahony
3个回答

7

通过使用pip安装"pillow"而不是"pil"解决了这个问题,从而可以轻松地在虚拟环境中部署。


3

当你编译PIL的时候,它会告诉你是否已经编译了PNG支持,但如果安装出现问题,我建议你使用Ubuntu自带的版本。它的命名方式很奇特,但可以通过以下方式轻松安装:

apt-get install python-imaging

我需要在虚拟环境中安装。 - DantheMan

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接