22

将通过 Django 表单上传的图像文件调整为ImageField.

4

2 回答 2

31

我很生气,因为我找不到一个完整的工作示例,只能在这里和那里找到一些。我设法自己把解决方案放在一起。这是完整的示例,我将它放在表单的 clean() 方法中(您也可以覆盖模型的 save() 方法,以完全相同的方式 - 更改 ImageField 的文件属性)。

import StringIO
from PIL import Image

image_field = self.cleaned_data.get('image_field')
image_file = StringIO.StringIO(image_field.read())
image = Image.open(image_file)
w, h = image.size

image = image.resize((w/2, h/2), Image.ANTIALIAS)

image_file = StringIO.StringIO()
image.save(image_file, 'JPEG', quality=90)

image_field.file = image_file
于 2013-03-20T12:21:35.280 回答
7

您可以使用 PIL 并在 YourModel.save() 方法中调整图像大小。

例子:

保存时调整图像大小

http://djangosaur.tumblr.com/post/422589280/django-resize-thumbnail-image-pil

http://davedash.com/2009/02/21/resizing-image-on-upload-in-django/

于 2013-03-20T09:33:25.827 回答