方案是,客户端将图像上传到我的Django服务,Django服务需要将图像尺寸调整为600 x 600
,并且应减少图像大小(以字节为单位)。
这是我使用的代码:
import StringIO
from django.core.files.uploadedfile import InMemoryUploadedFile
image.thumbnail((size, size), Image.ANTIALIAS)
然而,我发现有时甚至会以字节为单位增加图像大小。有时,客户端上传尺寸为1000 x 1000
且尺寸为80kb
的图片,在执行上述行生成缩略图后,缩略图为600 x 600
,尺寸为130kb
。我期待类似50kb
(压缩后至少小于80kb
)
请帮助
答案 0 :(得分:1)
试试这个,可能这个方法可以帮到你。
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, h0 = 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