Django如何判断上传的图片是否有效?
我正在尝试在我的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的预览中可以正常查看,所以看起来是有效的。
问题似乎出在Python图像库(PIL)没有把它识别为一张图片。为什么一个有效的图片会出现这种情况呢?
PIL已经安装,并通过Django的命令行确认过了。
3 个回答
0
我查看了Django的源代码,在django/forms/fields.py
文件里,找到了ImageField
这个类。Django确实使用了PIL这个库来判断一张图片是否有效。
2
你有没有试过上传像gif或png这样的图片格式?可能是因为你的PIL(Python图像库)没有正确安装jpeg库。我在Ubuntu上用Django的时候也遇到过类似的问题。如果你见过错误信息decoder jpeg not available
,可以查看这个链接。链接中的相关内容如下:
$ cd libImaging
$ ./configure --with-jpeg=/somelib/lib --with-zlib=/somelib/lib
12
根据Django的源代码,这三行代码是用来验证图片的:
from PIL import Image
trial_image = Image.open(file)
trial_image.verify()
这个图片的类型可能是PIL不支持的。你可以在这里查看支持的格式列表。