如何使用ImageField模型调整使用Django上传的图像文件的大小? [关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用ImageField模型调整使用Django上传的图像文件的大小? [关闭]相关的知识,希望对你有一定的参考价值。

调整通过Django表单上传的图像文件作为ImageField最简单的方法是什么?

答案

我很生气,我找不到一个完整的工作示例,只有这里和那里的位。我设法将解决方案放在一起。这是完整的例子,我把它放在表单的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
另一答案

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

例子:

resize image on save

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

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

以上是关于如何使用ImageField模型调整使用Django上传的图像文件的大小? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Django 信号(Pre_save,Post_save)从“B”模型的 ImageField 设置“A”模型的 ImageField

姜戈。覆盖模型的保存

Django Rest Framework imageField 到服务器

将通过 ajax 上传的文件保存到 Django 模型 ImageField

Django ORM 中 ImageField 的默认图像

带有 ImageFIeld 和 HTTPS 的 Django ModelSerializer