【问题标题】:Django ImageField "Upload a valid image. The file you uploaded was either not an image or a corrupted image."Django ImageField“上传一个有效的图像。您上传的文件不是图像或损坏的图像。”
【发布时间】:2011-11-28 05:28:59
【问题描述】:

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

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

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

我在安装 pypng、libpng-dev 等之后尝试重建 PIL。并且我在 ubuntu 服务器上。

【问题讨论】:

  • 当你安装 PIL 时,你确定它看到的是你的 libpng 等并确认它与 PNG 兼容吗?

标签: python django virtualenv


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    编译PIL的时候应该会说编译是否支持PNG,但是如果你自己安装有问题,我建议你使用ubuntu自带的版本。它的名字很奇怪,但很容易安装:

    apt-get install python-imaging
    

    【讨论】:

    • 我需要安装在虚拟环境中。
    【解决方案3】:

    我发现在 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      • 2012-01-24
      • 2019-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多