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

Бібліотека 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 — відмінний вибір для розробників будь-якого професійного рівня, які хочуть навчитися методом спроб і помилок ефективніше працювати із зображеннями.

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

Meta не змогли купити ШІ-стартап Іллі Суцкевера за $32 млрд, а тепер намагається переманити їхнього CEO

Meta Platforms посилює «полювання» на ключових фахівців зі штучного інтелекту. Після невдалої спроби викупити стартап…

20.06.2025

Україну на виставці VivaTech 2025 представляли 16 стартапів. Один з них визнали найперспективнішим соціально-екологічним проєктом заходу

Українська технологічна спільнота укотре підтвердила свої глобальні амбіції на виставці VivaTech 2025, де національний стенд…

20.06.2025

Програмісти яких країн найчастіше генерують код — результати дослідження

Розробники програмного забезпечення із США виявились найактивнішими в світі користувачами чат-ботів і помічників кодування на…

20.06.2025

Microsoft видалить застарілі драйвери з Windows Update

Компанія Microsoft повідомила про намір видалити застарілі драйвери, які досі доступні через Windows Update. Це…

20.06.2025

У пакетах npm виявили код, який циклічно відтворює гімн України для відвідувачів російських сайтів

Команда дослідження загроз Socket виявила два npm-пакети, які використовуються в JavaScript-розробці, з прихованим функціоналом для…

20.06.2025

Третина згенерованого коду потрапляє в продакшн без перевірки — звіт Cloudsmith

Штучний інтелект генерує понад половину коду в деяких компаніях, але значна його частина потрапляє в…

20.06.2025