Рубріки: Основи

Бібліотека Pillow: обробка зображень у Python

Дмитро Сімагін

Бібліотека Pillow в Python — незамінний помічник під час роботи із зображеннями. Створено її Джеффрі А. Кларком у 2013 році як форк широко відомої бібліотеки Python Imaging Library (PIL). За допомогою Pillow можна завантажувати, змінювати та зберігати оброблені фотографії у файл різних форматів. Ця властивість робить бібліотеку затребуваним інструментом для розробки програм, які потребують перетворення зображень.

Де потрібна Pillow?

Бібліотека Pillow необхідна у таких ситуаціях:

  • Редагування зображень: масштабування, обрізання, зміна формату та роздільної здатності.
  • Генерування мініатюр: створення зменшених копій зображень для веб-сторінок або програм.
  • Нанесення тексту на зображення (наприклад, водяні знаки або підписи).
  • Додавання фільтрів до зображення: корекція яскравості, контрасту та інші ефекти.
  • Вилучення метаданих: читання та запис метаданих з фото, таких як EXIF.
  • Склеювання декількох фотографій в одне нове зображення.

 

Як встановити Pillow

Встановлення Pillow для роботи з фотографіями відбувається за допомогою пакетного менеджера pip. Введіть просту команду:

pip install Pillow

 

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

від pil import image

 

Бібліотека Pillow: варіанти використання у Python

1. Відкриття та перегляд зображень

За допомогою Python Pillow ви можете відкрити та переглянути зображення. У цьому вам допоможе клас Image:

від PIL import Image

# Відкриваємо фото
image = Image.open("photo.jpg")

# Переглядаємо фото
image.show()

 

Ці дві команди відкривають одне зображення photo.jpg та показують його у стандартному засобі перегляду вашої операційної системи.

2. Редагування розміру

Щоб змінити розмір зображення, слід використати метод resize():

# Виконуємо зміну розміру вихідного зображення
new_image = image.resize((800, 600))

# Зберігаємо результат
new_image.save("resized_photo.jpg")

 

В результаті ширина та висота фотографії зменшаться до 800×600 пікселів, а саме зображення отримає нову назву resized_photo.jpg.

3. Обрізання зображення

Для обрізання фотографій використовується метод crop(), який приймає координати області обрізання:

# Обрізаємо фотографію по лівій верхній і правій нижній межі
cropped_image = image.crop((100, 100, 400, 400))

# Зберігаємо результат
cropped_image.save("cropped_photo.jpg")

 

Цей приклад обріже область зображення від (100, 100) до (400, 400) і збереже отриманий результат.

4. Поворот та дзеркальне відображення

Також ви можете повертати фотографію за допомогою методу rotate(), дзеркально відобразити за допомогою transpose():

# Потрібно повернути на 30 градусів
rotated_image = image.rotate(30)

# Дзеркальне відображення по горизонталі
flipped_image = image.transpose(Image.FLIP_LEFT_RIGHT)

# Зберігаємо результат
rotated_image.save("rotated_photo.jpg")
flipped_image.save("flipped_photo.jpg")

 

5. Інші фільтри для обробки зображень

Бібліотека Pillow має різні можливості фільтрації зображень: ви можете додавати фільтри для фото, створювати розмите зображення, збільшити різкість або виконати інші команди. У цьому вам допоможе модуль ImageFilter:

від PIL import ImageFilter

# Ефект розмиття
blurred_image = image.filter(ImageFilter.BLUR)

# Збільшення різкості
sharpened_image = image.filter(ImageFilter.SHARPEN)

# Зберігаємо результати
blurred_image.save("blurred_photo.jpg")
sharpened_image.save("sharpened_photo.jpg")

 

6. Нанесення тексту на фото

Щоб нанести текст на кольорове або чорно-біле зображення, використовуйте клас ImageDraw у бібліотеці Pillow. Якщо хочете змінити шрифт напису, то скористайтеся модулем ImageFont:

from PIL import ImageDraw, ImageFont

# Створення об'єкту для малювання
draw = ImageDraw.Draw(image)

# Завантаження шрифту
font = ImageFont.truetype("tahoma.ttf", 28)

# Нанесення тексту
draw.text((100, 100), "Hello, Pillow!", font=font, fill="red")

# Збереження результату
image.save("text_photo.jpg")

 

Цей код нанесе текст Hello, Pillow! червоного кольору на наше зображення.

7. Генерування мініатюр

Для створення зображень зменшеного розміру (мініатюри) та подальшого використання її у веб-додатках виконайте дії:

# Створюємо мініатюру (пропорційно до зазначених розмірів)
image.thumbnail((250, 250))

# Зберігаємо результат
image.save("thumbnail_photo.jpg")

 

8. Вилучення метаданих EXIF

Бібліотека Pillow дозволяє вилучати та змінювати метадані EXIF ​​з фотографій. Ось код, щоб прочитати метадані:

# Читання метаданих EXIF
exif_data = image._getexif()

# Виведення метаданих на екран
if exif_data:
   for tag, value in exif_data.items():
      print(f"{tag}: {value}")

 

Просунуті методи обробки зображень

1. Об’єднання зображень

Бібліотека Pillow підтримує поєднання двох зображень в одне. Це можливо завдяки методу Image.blend(). Єдина умова: обидва зображення мають бути однакового розміру:

# Відкрити друге зображення
image2 = Image.open("photo2.jpg").resize(image.size)

# Об'єднати зображення зі значенням альфа 0,5
blended_image = Image.blend (image, image2, alpha = 0.5)

# Зберегти змішане зображення
blended_image.save("blended_photo.jpg")

 

2. Маскування та альфа-композитинг

Альфа-композитинг дозволяє виконувати більш складні маніпуляції з фотографіями, використовуючи маску для керування тим, які частини зображення торкнуться:

# Створити альфа-маску
mask = Image.new("L", image.size, 128) # Режим L для маски у відтінках сірого з прозорістю 50%

# Скомпонувати зображення за допомогою маски
composited_image = Image.composite(image, image2, mask)

# Зберегти складне зображення
composited_image.save("composited_photo.jpg")

 

3. Робота з різними колірними режимами

Pillow може перетворювати зображення між різними колірними режимами, такими як RGB, відтінки сірого та CMYK:

# Перетворити зображення на відтінки сірого
grayscale_image = image.convert("L")

# Перетворити зображення на CMYK
cmyk_image = image.convert("CMYK")

#Зберегти перетворені зображення
grayscale_image.save("grayscale_photo.jpg")
cmyk_image.save("cmyk_photo.jpg")

 

Далі просто запустіть наведений вище код. Як бачите, ви можете використовувати Pillow для різних завдань.

Висновок

Як ви вже переконалися, популярна бібліотека Pillow — чудовий та зручний засіб для роботи з фотографіями та будь-якими іншими типами зображень у Python. Вона включає безліч корисних функцій, які дозволяють обробляти фотографії за заданими параметрами. Ви можете встановити для нового фото нову ширину і висоту, об’єднати в одне зображення дві фотографії, виконати багато інших перетворень.

З бібліотекою Pillow особливо зручно працювати при розробці веб-застосунків, тому що з її допомогою багато графічних завдань можна автоматизувати. Обробка зображень з допомогою бібліотеки скорочує робочий час, витрачений розробником на виконання цих завдань.

Бібліотека Python Pillow — відмінний вибір для розробників будь-якого професійного рівня, які хочуть навчитися методом спроб і помилок ефективніше працювати із зображеннями.

Останні статті

Міноборони розширило функціонал мобільного додатку Резерв+

Міністерство оборони України розширило можливість сплати штрафів через мобільний додаток Резерв+. Тепер у ньому можна…

05.09.2025

Побутова техніка Tesla: армовані метали, передові полімери та доступна ціна. Що представлено в лінійках

Втома від техніки, яка швидко зношується, змушує українців переглядати підхід до покупок. Відтепер на перше…

05.09.2025

Код, згенерований інструментами ШІ, створює вдесятеро більше проблем безпеки

Спеціалісти компанії Apiiro, які проаналізували код з десятків тисяч репозиторіїв, виявили, що розробники за допомогою…

05.09.2025

Державна платформа Brave1 оголошує гранти до 100 млн грн для ШІ-розробників

Маркетплейс Brave1 — онлайн-платформа, що об'єднує українських військових та розробників — запускає грантовий конкурс з…

05.09.2025

У Києві пройде перший хакатон з вайб-кодингу: як взяти участь

4-5 жовтня в Києві на Подолі пройде захід Vibecoding Hackathon. Протягом двох днів розробники, користувачі…

05.09.2025

OpenAI запустить платформу для IT-найму та програму сертифікації навичок

OpenAI готується запустити платформу для найму, яка конкуруватиме з LinkedIn. Майбутній сервіс під назвою OpenAI…

05.09.2025