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