Я хочу сжать изображение в режиме просмотра перед сохранением, но размер файла остается прежним

У меня есть функциональное представление обновления, в котором я пытаюсь сжать загруженные изображения перед их сохранением. Однако, когда я пытаюсь сжать изображение, ничего не происходит, и вместо этого изображение просто сохраняется с точно таким же размером.

Я думаю, что, возможно, я сохраняю его неправильно, но я не знаю, как сохранить его правильно. Пожалуйста, дайте мне знать. Спасибо!

import io
from PIL import Image


def get_compressed_image(file):
    image = Image.open(file)

    with io.BytesIO() as output:
        image.save(output, format=image.format, quality=20, optimize=True)
        contents = output.getvalue()
        return contents


def updated_form_view(request)
    ...
    
    if initial_form.is_valid():
        initial_form.clean()
        updated_form = initial_form.save(commit=False)
        updated_form.username = request.user.username

        # compressing image here
        updated_form.form_image.file.image = get_compressed_image(updated_form.form_image)


        updated_form.save()```

мы должны уменьшить разрешение изображения, например, так:

from PIL import Image

img = Image.open("logo.jpg")
amount = 1.5 # higher amount: more reduction. lower: less reduction
width, height = img.size

new_size = int(width // amount), int(height // amount)
compressed = img.resize(new_size,Image.ANTIALIAS)
compressed.save("compressed.jpg")

меньшее разрешение + отсутствие exif-информации = меньший размер

и обратите внимание, что ваш код работает, но он не изменяет разрешение картинки а пикселизирует изображение вот так: просто нажмите на него

Вернуться на верх