Django如何确定上传的图像是否有效?

时间:2009-09-02 16:21:21

标签: python django python-imaging-library

我正在尝试在我的Django应用程序中为我的模型添加图像。

models.py

class ImageMain(models.Model):
"""This is the Main Image of the product"""
    product = models.ForeignKey(Product)
    photo = models.ImageField(upload_to='products')

在开发模式下,每当我尝试通过Django管理员上传图像时,我都会得到:

Upload a valid image. The file you uploaded was either not an image or a corrupted image.

我试图上传的jpg可以通过os X Preview查看,因此它似乎是有效的。

似乎问题是Python Imaging Library无法将其识别为图像。为什么会出现有效的图像呢?

安装PIL,通过Django shell验证。

3 个答案:

答案 0 :(得分:12)

根据Django的源代码。这三行负责验证图像:

from PIL import Image
trial_image = Image.open(file)
trial_image.verify()

PIL可能不支持图像类型。查看支持的格式列表here

答案 1 :(得分:2)

您是否尝试上传gif或png等图片格式?可能是你的PIL没有正确构建jpeg lib。在Ubuntu上我和Django有类似的问题。如果您曾看到错误消息decoder jpeg not available,请检查此link。链接中的相关行:

$ cd libImaging
$ ./configure --with-jpeg=/somelib/lib --with-zlib=/somelib/lib

答案 2 :(得分:0)

我查看了django/forms/fields.pyImageField中的Django源代码。 Django实际上确实使用PIL来确定图像何时有效。