【发布时间】:2023-03-26 09:40:01
【问题描述】:
我正在为我的学校制作这个网站,我需要优化它,就像很多一样。
因此,我决定以 jpeg-2000 和 webp 等下一代格式提供我所有的压缩图像。使用 Pillow,这是我目前所拥有的:
class Bulletin(models.Model):
banner = models.ImageField(upload_to='banner/', blank=True)
def save(self, *args, **kwargs):
super().save()
if self.banner:
thumbnail = Image.open(self.banner.path)
resized = thumbnail.resize((1280, 620))
resized.save(self.banner.path, quality=60)
所以我认为这会压缩图像(如果我在上面的代码中犯了错误,请告诉我)。
所以现在我希望能够以多种格式保存这张图片 我希望上传的一张图片以这些格式保存:
- webp
- jpeg2000
- JPEG
我正在考虑在我的模型横幅上创建更多字段,例如字段 banner_webp,然后我会将其转换为 webp,并在保存期间将转换后的图像保存到该字段。
问题是我不知道如何使用 Pillow 转换图像,或者如何做我所要求的。感谢您的帮助。
【问题讨论】:
-
对不起,如果我的赏金不清楚,我想知道如何使用 django 以多种格式保存图像。谢谢。
-
我认为您没有阅读 Pillow 文档。它具有您提到的两种格式(JPEG 2000 和 WebP),尽管有一些额外的依赖项。 pillow.readthedocs.io/en/stable/handbook/…
-
@Aaqib Bashir,我的问题措辞错误。我想将用户上传的图像转换为 webp、jpeg2000 和 jpeg。我知道 Pillow 具备这两种格式的能力。
-
带有枕头的“转换”应该只是以新格式加载和保存。看看
Image.save():使用扩展名为“jpeg”或“webp”的文件名来调用它就足够了。这是你想要的吗?然后我将其添加为答案。
标签: django image format python-imaging-library