我正在尝试在我的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验证。
答案 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.py
类ImageField
中的Django源代码。 Django实际上确实使用PIL来确定图像何时有效。