Я хочу сжать изображение в режиме просмотра перед сохранением, но размер файла остается прежним
У меня есть функциональное представление обновления, в котором я пытаюсь сжать загруженные изображения перед их сохранением. Однако, когда я пытаюсь сжать изображение, ничего не происходит, и вместо этого изображение просто сохраняется с точно таким же размером.
Я думаю, что, возможно, я сохраняю его неправильно, но я не знаю, как сохранить его правильно. Пожалуйста, дайте мне знать. Спасибо!
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-информации = меньший размер
и обратите внимание, что ваш код работает, но он не изменяет разрешение картинки а пикселизирует изображение вот так: просто нажмите на него