Бібліотека Pillow: обробка зображень у Python
Бібліотека Pillow в Python — незамінний помічник під час роботи із зображеннями. Створено її Джеффрі А. Кларком у 2013 році як форк широко відомої бібліотеки Python Imaging Library (PIL). За допомогою Pillow можна завантажувати, змінювати та зберігати оброблені фотографії у файл різних форматів. Ця властивість робить бібліотеку затребуваним інструментом для розробки програм, які потребують перетворення зображень.
Встановлення Pillow для роботи з фотографіями відбувається за допомогою пакетного менеджера pip. Введіть просту команду:
pip install Pillow
Після завершення встановлення бібліотеку можна імпортувати таким чином:
від pil import image
За допомогою Python Pillow ви можете відкрити та переглянути зображення. У цьому вам допоможе клас Image:
від PIL import Image # Відкриваємо фото image = Image.open("photo.jpg") # Переглядаємо фото image.show()
Ці дві команди відкривають одне зображення photo.jpg та показують його у стандартному засобі перегляду вашої операційної системи.
Щоб змінити розмір зображення, слід використати метод resize():
# Виконуємо зміну розміру вихідного зображення new_image = image.resize((800, 600)) # Зберігаємо результат new_image.save("resized_photo.jpg")
В результаті ширина та висота фотографії зменшаться до 800×600 пікселів, а саме зображення отримає нову назву resized_photo.jpg.
Для обрізання фотографій використовується метод crop(), який приймає координати області обрізання:
# Обрізаємо фотографію по лівій верхній і правій нижній межі cropped_image = image.crop((100, 100, 400, 400)) # Зберігаємо результат cropped_image.save("cropped_photo.jpg")
Цей приклад обріже область зображення від (100, 100) до (400, 400) і збереже отриманий результат.
Також ви можете повертати фотографію за допомогою методу 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")
Бібліотека 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")
Щоб нанести текст на кольорове або чорно-біле зображення, використовуйте клас 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! червоного кольору на наше зображення.
Для створення зображень зменшеного розміру (мініатюри) та подальшого використання її у веб-додатках виконайте дії:
# Створюємо мініатюру (пропорційно до зазначених розмірів) image.thumbnail((250, 250)) # Зберігаємо результат image.save("thumbnail_photo.jpg")
Бібліотека Pillow дозволяє вилучати та змінювати метадані EXIF з фотографій. Ось код, щоб прочитати метадані:
# Читання метаданих EXIF exif_data = image._getexif() # Виведення метаданих на екран if exif_data: for tag, value in exif_data.items(): print(f"{tag}: {value}")
Бібліотека 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")
Альфа-композитинг дозволяє виконувати більш складні маніпуляції з фотографіями, використовуючи маску для керування тим, які частини зображення торкнуться:
# Створити альфа-маску mask = Image.new("L", image.size, 128) # Режим L для маски у відтінках сірого з прозорістю 50% # Скомпонувати зображення за допомогою маски composited_image = Image.composite(image, image2, mask) # Зберегти складне зображення composited_image.save("composited_photo.jpg")
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 — відмінний вибір для розробників будь-якого професійного рівня, які хочуть навчитися методом спроб і помилок ефективніше працювати із зображеннями.
Резиденти Дія.City сплатили до бюджету понад 8 млрд грн податків в І кварталі 2025 року.…
У Китаї закликають офісних працівників не працювати надто багато — держава сподівається, що вільний час…
Експерти звертають увагу на тривожну тенденцію: люди все частіше використовують ChatGPT, щоб визначити місцезнаходження, зображене…
Компанія JetBrains випустила нову версію мультимовного середовища розробки IntelliJ IDEA 2025.1. Оновлена IDE отримала численні…
Платформа обміну миттєвими повідомленнями Discord впроваджує функцію перевірки віку за допомогою сканування обличчя. Зараз вона…
Wikipedia намагається захистити себе від тисяч різноманітних ботів-скрейперів, які сканують дані цієї платформи для навчання…