gpt4 book ai didi

python - PIL - 将图像保存为 .jpg 不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:26 25 4
gpt4 key购买 nike

我正在尝试覆盖模型的 save() 方法来调整图像大小。除保存 .jpg 图像外,每种格式都适用。它不保存扩展名为 .jpg 的图像。

我阅读了 Pillow 文档,发现没有 JPG 格式。

class Business(models.Model):
photo = models.ImageField(_('photo'), storage=OverwriteStorage(),
upload_to=image_upload_to, blank=True, null=True)


def save(self, **kwargs):
"""
Changing dimensions of images if they are to big.
Set max height or width to 800px depending on the image is portrait or landscape.
"""
# Opening the uploaded image
im = Image.open(self.photo)
print(im)
output = BytesIO()
# set the max width or height
im.thumbnail((800, 800))
# find the ext of the file
ext = self.photo.name.split('.')[1].upper()

if ext in {'JPEG', 'PNG', 'GIF', 'TIFF'}:
# after modifications, save it to the output
im.save(output, format=ext, quality=100)
output.seek(0)
# change the imagefield value to be the newley modifed image value
self.photo = InMemoryUploadedFile(output, 'ImageField', "%s.jpg" % self.photo.name.split('.')[0],
'image/jpeg', sys.getsizeof(output), None)
super(User, self).save()

我不知道我在这里缺少什么。

在自定义用户模型上执行此操作的最佳方法是什么。使用信号、覆盖 ImageField 或...

感谢任何帮助:)

最佳答案

您处理了扩展名JPEG,但没有处理JPG

您可以在 if 之前简单地使用类似的内容来处理它:

if ext == 'JPG':
ext = 'JPEG'

关于python - PIL - 将图像保存为 .jpg 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49220176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com