gpt4 book ai didi

python - Django 将图像转换为 webp

转载 作者:行者123 更新时间:2023-12-03 08:04:22 26 4
gpt4 key购买 nike

我的 Django 项目应用程序中有上传图像的服务,我需要将所有图像转换为 webp,以优化前端对这些文件的进一步处理。

_convert_to_webp 方法草案:

# imports
from pathlib import Path

from django.core.files import temp as tempfile
from django.core.files.uploadedfile import InMemoryUploadedFile
from PIL import Image


# some service class
...
def _convert_to_webp(self, f_object: InMemoryUploadedFile):
new_file_name = str(Path(f_object._name).with_suffix('.webp'))

temp_file = tempfile.NamedTemporaryFile(suffix='.temp.webp')
# FIXME: on other OS may cause FileNotFoundError
with open(temp_file 'wb') as f:
for line in f_object.file.readlines():
... # will it works good?
new_file = ...

new_f_object = InMemoryUploadedFile(
new_file,
f_object.field_name,
new_file_name,
f_object.content_type,
f_object.size,
f_object.charset,
f_object.content_type_extra
)

return new_file_name, new_f_object
...

f_object 是 POST 请求正文中的 InMemoryUploadedFile 实例(Django 自动创建它)。

我的想法是创建一个临时文件,将f_object.file.readlines()中的数据写入其中,使用PIL.Image.open打开该文件并保存与format="webp"。这个想法是好的还是有另一种方法来进行文件转换?

最佳答案

我找到了一种非常干净的方法来使用django-resized来做到这一点包。

安装 pip 后,我只需要将 imageField 替换为 ResizedImageField

    img = ResizedImageField(force_format="WEBP", quality=75, upload_to="post_imgs/")

所有上传的图片都会自动转换为.webp!

关于python - Django 将图像转换为 webp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72885136/

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