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

0 投票
1 回答
666 浏览
提问于 2025-04-18 18:43

我很快会让我的朋友通过我这个小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

供参考,我正在使用Django 1.6和Python 3.4

我该如何在上传之前检查图片的高度、宽度和文件类型呢?

1 个回答

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/

撰写回答