在使用Django中的ImageField上传之前验证图像高度,宽度和文件类型

时间:2014-08-27 14:53:28

标签: python django django-models

我很快就会让朋友通过我的小Django项目的管理界面上传图片。我希望他遵循两条规则:

  • 图片必须为2000 x 1200像素
  • 图片必须是PNG文件

我目前的型号如下:

class MapLayout(models.Model):
    name = models.CharField(max_length=255)
    description = models.TextField(max_length=255)
    slug = models.SlugField(max_length=255)

    def upload_details(instance, filename):
        path = "maps/" # Upload location
        format = instance.slug + '.png' # Filename
        return os.path.join(path, format)

    image = models.ImageField(upload_to=upload_details)

    def __str__(self):
        return self.name

作为参考,我使用Python 3.4运行Django 1.6

如何在上传前验证图像的高度,宽度和文件类型?

1 个答案:

答案 0 :(得分:1)

您可以使用像Pillow这样的库来执行此操作:

from PIL import Image

image=Image.open(filepath)
image.size # (width,height) tuple
image.format # (keeps the image format)

您可以在官方文档中找到更多信息:

http://pillow.readthedocs.org/en/latest/