Бывает, что нужно массово у всех изображений в папке изменить размеры (разрешения). В данном примере мы меняем по сторонам 650х400 (ширина х высота), тоесть, все пропорции сохраняются, но если какая-либо сторона больше указанных рамок, то делаем ресайз. Таким нехитрым способом мне удалось сократить вес пикчей в 3 раза! Вот сам код на Python, справляется очень быстро, при необходимости можете
поменять размеры на свои:
from PIL import Image
import os
def crabs_resize_image(image_path):
# Открываем изображение
image = Image.open(image_path)
# Получаем размеры изображения
width, height = image.size
# Вычисляем новые размеры с сохранением пропорций
if width > 650:
new_width = 650
new_height = int((new_width / width) * height)
elif height > 400:
new_height = 400
new_width = int((new_height / height) * width)
else:
return image # Изображение уже удовлетворяет заданным размерам
# Уменьшаем изображение
resized_image = image.resize((new_width, new_height), Image.LANCZOS)
resized_image.save(image_path)
# Путь к папке с изображениями
folder_path = "uploads"
# Обход всех файлов в папке
for filename in os.listdir(folder_path):
if filename.lower().endswith(('.jpg', '.jpeg')):
image_path = os.path.join(folder_path, filename)
crabs_resize_image(image_path)
print('Ok')