[Python] Django convert image to webp

Discussão em 'Python' iniciado por Stack, Novembro 27, 2024.

  1. Stack

    Stack Membro Participativo

    I have service in my Django project's app, that upload images, and I need to convert all images to webp to optimize further work with these files on the frontend side.

    Draft of _convert_to_webp method:

    # 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 is InMemoryUploadedFile instance from POST request body (Django automatically create it).

    My idea is to create a temporary file, write data from f_object.file.readlines() to it, open this file with PIL.Image.open and save with format="webp". Is this idea a good one or there is another way to make file converting?

    Continue reading...

Compartilhe esta Página