1. Обрізка зображень
Поняття обрізки і її застосування
Отже, давай почнемо розбиратися, як обрізати і повертати зображення. Ця навичка стане в нагоді у різних проєктах — від підготовки графіки для вебсайтів до створення контенту для соціальних мереж.
Обрізка зображення — це як відрізати зайві краї від фотографії, щоб сфокусуватися на головному об'єкті. Уяви, що ти отримав чудове фото заходу сонця, але по краях випадково потрапили цікаві зеваки. Обрізка допоможе тобі позбутися їх (віртуально, звісно) без суду і слідства!
Метод crop()
Метод crop() приймає координати прямокутної області, яку ти хочеш вирізати із зображення. Координати задаються у вигляді чотирьох значень: (ліва, верхня, права, нижня).
# Обрізка зображення
cropped_image = image.crop((100, 100, 400, 400))
# Збереження обрізаного зображення
cropped_image.save("cropped_example.jpg")
У цьому прикладі зображення буде обрізано до області з верхнім лівим кутом у точці (100, 100) і нижнім правим кутом у точці (400, 400). Цей метод створює нове зображення із вказаної частини початкового зображення.
Динамічна обрізка на основі розмірів зображення
Якщо ти хочеш обрізати зображення до центру, можна розрахувати координати обрізки на основі його розмірів:
width, height = image.size
left = (width - 200) / 2
top = (height - 200) / 2
right = (width + 200) / 2
bottom = (height + 200) / 2
center_cropped_image = image.crop((left, top, right, bottom))
center_cropped_image.save("center_cropped_example.jpg")
Цей код обрізає центральну частину зображення розміром 200x200 пікселів. Розрахунок координат гарантує, що обрізана область буде розташована у центрі зображення.
2. Поворот зображення
Поворот зображення дозволяє змінювати його орієнтацію, що особливо корисно, якщо фотографія була знята у неправильній орієнтації або потрібно створити художній ефект.
Метод rotate()
Метод rotate() повертає зображення на вказаний кут проти годинникової стрілки. Кут задається у градусах, і метод створює нове повернуте зображення.
# Поворот зображення на 90 градусів проти годинникової стрілки
rotated_image = image.rotate(90)
rotated_image.save("rotated_90_example.jpg")
У цьому прикладі зображення буде повернуто на 90 градусів проти годинникової стрілки. Можна також задати інший кут повороту (наприклад, 45, 180, або 270 градусів), щоб досягти потрібного результату.
Управління білими полями при повороті
За замовчуванням rotate() додає білі поля (або прозорі, якщо використовується режим RGBA) по краях зображення, щоб зберегти весь його контент. Якщо ти хочеш, щоб зображення заповнило весь кадр без полів, використовуй параметр expand=True.
# Поворот із розширенням зображення, щоб воно заповнило весь кадр
rotated_expanded_image = image.rotate(45, expand=True)
rotated_expanded_image.save("rotated_expanded_example.jpg")
У цьому випадку Pillow збільшить розміри зображення, щоб умістити весь його контент, що корисно при поворотах на нестандартні кути (наприклад, 45 градусів).
3. Дзеркальне відображення зображення
Дзеркальне відображення дозволяє перевернути зображення горизонтально або вертикально. Це зручно, коли потрібно змінити напрямок об'єкта на фотографії або створити симетричний ефект.
Метод transpose()
Метод transpose() використовується для дзеркального відображення і підтримує наступні параметри:
Image.FLIP_LEFT_RIGHT: Відображення по горизонталі.Image.FLIP_TOP_BOTTOM: Відображення по вертикалі.
# Дзеркальне відображення по горизонталі
flipped_horizontal = image.transpose(Image.FLIP_LEFT_RIGHT)
flipped_horizontal.save("flipped_horizontal_example.jpg")
# Дзеркальне відображення по вертикалі
flipped_vertical = image.transpose(Image.FLIP_TOP_BOTTOM)
flipped_vertical.save("flipped_vertical_example.jpg")
Ці команди перевертають зображення по горизонталі і по вертикалі, що можна використовувати для різних ефектів або для виправлення орієнтації.
Приклади практичного використання обрізки, повороту і дзеркального відображення
- Фокусування на конкретній області зображення: Обрізка дозволяє виділити потрібну частину зображення, що корисно при створенні портретів, обрізці зайвих деталей і підготовці зображень для соціальних мереж або вебсайтів.
- Виправлення орієнтації зображення: Поворот використовується для виправлення орієнтації фотографії, особливо якщо пристрій зняв її в неправильному положенні. Прикладом може бути виправлення зображення, знятого в альбомній орієнтації, для публікації в портретній орієнтації.
- Створення симетричних ефектів: Дзеркальне відображення часто використовується в дизайні для створення симетричних зображень, цікавих візуальних ефектів і покращення композиції.
4. Типові помилки і як їх уникнути
При роботі з Pillow іноді виникають помилки, з якими, ймовірно, зіткнеться кожен новачок. Одна з таких помилок — спроба обрізати зображення за межами його фактичних розмірів. Завжди перевіряй розмір зображення і задавай координати обрізки в межах цих розмірів.
Ще один нюанс — при обертанні зображення може виглядати обрізаним, якщо використовуєш метод `rotate` без додаткових налаштувань. Це відбувається через зміну розміру зображення при повороті. Щоб цього уникнути, використовуй параметр expand=True, який автоматично підганяє розміри:
# Повертаємо зображення на 45 градусів з розширенням, щоб уникнути обрізки кутів
rotated_image = image.rotate(45, expand=True)
rotated_image.save("rotated_expanded.jpg")
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ