From 28596203231ce8e8d24afe5c442a7e2f8d5015ae Mon Sep 17 00:00:00 2001 From: MaskedMir Date: Mon, 16 Oct 2023 18:22:15 +0300 Subject: [PATCH 1/2] Resize image --- files/helpers.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/files/helpers.py b/files/helpers.py index d09cbccf..f5a860d7 100644 --- a/files/helpers.py +++ b/files/helpers.py @@ -7,3 +7,33 @@ def convert_image_to_webp(image, quality: int = 70): pil_image = Image.open(image.file) webp_image = webp.WebPPicture.from_pil(pil_image) return webp_image.encode(config) + + +def resize_image(image, size=(512, 512)): + pil_image = Image.open(image.file) + + if ( + pil_image.height < pil_image.width + ): # Подгонка параметров для горизонтальных изображений + width, height = pil_image.width, pil_image.width + x, y = 0, int((pil_image.height - height) // 2) + + elif ( + pil_image.height > pil_image.width + ): # Подгонка параметров для вертикальных изображений + width, height = pil_image.height, pil_image.height + x, y = int((pil_image.width - width) // 2), 0 + + else: + width, height = ( + pil_image.width, + pil_image.height, + ) # Подгонка параметров для квадратных изображений + x, y = 0, 0 + + area = (x, y, x + width, y + height) # Итоговые размеры до ресайза + + pil_image = pil_image.crop(area) + pil_image = pil_image.resize(size) + + return pil_image From b63ad26b9a3649469b65cedc241742e213855314 Mon Sep 17 00:00:00 2001 From: MaskedMir Date: Mon, 16 Oct 2023 19:03:40 +0300 Subject: [PATCH 2/2] Resize image and fixed codestyle issues --- files/helpers.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/files/helpers.py b/files/helpers.py index f5a860d7..5b205648 100644 --- a/files/helpers.py +++ b/files/helpers.py @@ -12,26 +12,23 @@ def convert_image_to_webp(image, quality: int = 70): def resize_image(image, size=(512, 512)): pil_image = Image.open(image.file) - if ( - pil_image.height < pil_image.width - ): # Подгонка параметров для горизонтальных изображений + # Подгонка параметров для горизонтальных изображений + if pil_image.height < pil_image.width: width, height = pil_image.width, pil_image.width x, y = 0, int((pil_image.height - height) // 2) - elif ( - pil_image.height > pil_image.width - ): # Подгонка параметров для вертикальных изображений + # Подгонка параметров для вертикальных изображений + elif pil_image.height > pil_image.width: width, height = pil_image.height, pil_image.height x, y = int((pil_image.width - width) // 2), 0 + # Подгонка параметров для квадратных изображений else: - width, height = ( - pil_image.width, - pil_image.height, - ) # Подгонка параметров для квадратных изображений + width, height = pil_image.width, pil_image.height x, y = 0, 0 - area = (x, y, x + width, y + height) # Итоговые размеры до ресайза + # Итоговые размеры до ресайза + area = (x, y, x + width, y + height) pil_image = pil_image.crop(area) pil_image = pil_image.resize(size)