Сжатие изображений на Python

Сжатие изображений на Python Статьи

Введение

В ходе статьи напишем программу для сжатия изображений на языке программирования Python.

Работа программы заключается в том, что она ищет все изображения, находящиеся в папке с .py файлом, сжимает их, и сохраняет в папку output.

Сжатие изображений на Python

Перед написанием кода потребуется установить модуль Pillow. Для его установки нужно перейти в терминал, или же командную строку, прописать pip install Pillow, нажать Enter и ждать установки.

После инсталляции модуля Pillow, импортируем из него Image, а также импортируем модуль glob:

from PIL import Image
import glob

Далее создадим кортеж с расширениями файлов, которые мы будем сжимать. В качестве примера использую самые популярные (png и jpg):

from PIL import Image
import glob

types = ("*.png", "*.jpg")

Создадим пустой список files_grabbed:

from PIL import Image
import glob

types = ("*.png", "*.jpg")
files_grabbed = []

Теперь создаём цикл, в котором пройдёмся по всем указанным в кортеже types типам файлов,
и сохраним их в список files_grabbed:

from PIL import Image
import glob

types = ("*.png", "*.jpg")
files_grabbed = []

for files in types:
    files_grabbed.extend(glob.glob(files))

Выведем количество найденных файлов:

from PIL import Image
import glob

types = ("*.png", "*.jpg")
files_grabbed = []

for files in types:
    files_grabbed.extend(glob.glob(files))

print(f'Найдено файлов: {len(files_grabbed)}')

Создадим цикл, в котором уже пройдёмся по всем сохранённым файлам в список files_grabbed.
Внутри цикла откроем изображение, и зададим условие, что если высота изображения
больше трёхсот, или ширина больше трёхсот, то создаётся кортеж со значениями 300 и 300:

from PIL import Image
import glob

types = ("*.png", "*.jpg")
files_grabbed = []

for files in types:
    files_grabbed.extend(glob.glob(files))

print(f'Найдено файлов: {len(files_grabbed)}')

for i in files_grabbed:
    img = Image.open(i)
    if img.height > 300 or img.width > 300:
        output_size = (300, 300)

Далее сжимаем изображение с помощью функции thumbnail(), в скобочках указав максимально допустимое разрешение, т.е. 300 на 300. После чего мы сохраняем сжатое изображение в папку output с её же именем и расширением:

from PIL import Image
import glob

types = ("*.png", "*.jpg")
files_grabbed = []

for files in types:
    files_grabbed.extend(glob.glob(files))

print(f'Найдено файлов: {len(files_grabbed)}')

for i in files_grabbed:
    img = Image.open(i)
    if img.height > 300 or img.width > 300:
        output_size = (300, 300)
        img.thumbnail(output_size)
        img.save(f'output/{i}')

Видеоурок «Сжатие изображений на Python»

Сжатие изображений на Python

Заключение

В ходе статьи мы с Вами написали программу на языке программирования Python, которая сжимает изображения, и сохраняет в отдельную папку. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂

Admin
Admin
IT Start