找到图像分辨率的最佳方法

时间:2013-07-07 20:17:38

标签: django

我有一个标准的图像模型。

class ImageUpload(models.Model):
    image = models.ImageField(upload_to='images/%Y/%m/%d')
    title = models.CharField(max_length=20)    

然而,当我创建模型时,我没有为高度和宽度创建字段。无论如何我在视图中找到图像的高度和宽度而不向模型添加任何东西?如果没有,我怎么能将高度和宽度字段添加到模型中并从已存储在数据库中的图像中自动添加?

3 个答案:

答案 0 :(得分:3)

或者您可以使用django get_image_dimensions

from django.core.files.images import get_image_dimensions

w, h = get_image_dimensions(image) # Returns the (width, height) of an image, given an open file or a path

答案 1 :(得分:1)

对于新上传的图像,请使用以下信号在模型的post_save中处理:

django.db.models.signals.post_save

要使用PIL获取大小,

img = Image.open(path_to_file)
width, height = img.size

对于现有图像,您可能只想编写一些内容来为现有数据库条目执行此操作。

脚本编写的替代方法是更新应用程序以尝试查找宽度,高度并更新它们(如果尚未设置)。

答案 2 :(得分:-1)

您可以使用PIL(Python图像库):

from PIL import Image
img_file = Image.open(path_to_imagefile)
w,h = img_file.size