JavaRush /Курси /Python SELF UA /Зміна розмірів зображень

Зміна розмірів зображень

Python SELF UA
Рівень 45 , Лекція 1
Відкрита

1. Завантаження та збереження зображень

Для завантаження зображень у Pillow використовується клас Image. Після завантаження зображення можна перетворювати та зберігати у різних форматах. Давай розглянемо основні операції завантаження та збереження зображень.

Завантаження зображення

Щоб завантажити зображення, використовуй метод Image.open(). Він дозволяє відкрити зображення будь-якого підтримуваного формату.

Python

from PIL import Image

# Відкриття зображення
image = Image.open("example.jpg")

# Виведення інформації про файл
print(image.format)  # Формат зображення, наприклад, JPEG або PNG
print(image.size)    # Розміри зображення (ширина, висота)
print(image.mode)    # Колірний режим, наприклад, RGB або Grayscale

Цей код завантажує зображення example.jpg і виводить його основні характеристики: формат, розмір і колірний режим. Якщо зображення не знаходиться в тій же папці, вкажи повний шлях до файлу.

Збереження зображення

Після завантаження і змінення зображення ти можеш зберегти його у будь-якому іншому підтримуваному форматі, просто вказавши потрібне розширення в імені файлу. Метод save() дозволяє задавати ім'я та формат вихідного файлу.

Python

# Збереження зображення в іншому форматі
image.save("example.png")  # Зберігає зображення у форматі PNG

Ти також можеш змінити якість збереженого зображення для зменшення розміру файлу, що особливо корисно для зображень формату JPEG.

Python

# Збереження із зміною якості
image.save("compressed_example.jpg", quality=85)  # Значення quality варіюється від 1 до 95

2. Зміна розмірів зображення

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

Зміна розміру за допомогою методу resize()

Метод resize() дозволяє вказати точні розміри зображення (ширину і висоту), але при цьому зображення може спотворюватися, якщо нові розміри не зберігають вихідних пропорцій.

Python

# Встановлення нового розміру
new_size = (800, 600)
resized_image = image.resize(new_size)

# Збереження зменшеного зображення
resized_image.save("resized_example.jpg")

У цьому прикладі зображення змінюється до розмірів 800x600 пікселів і зберігається як новий файл. Якщо вихідне зображення має інші пропорції, то воно буде розтягнуто або стиснуто, щоб відповідати новим розмірам.

Пропорційна зміна розміру за допомогою thumbnail()

Щоб змінити розмір зображення, зберігаючи його пропорції, використовуй метод thumbnail(). Цей метод автоматично зменшує зображення так, щоб воно відповідало зазначеним розмірам, при цьому зберігаючи вихідні пропорції. Це особливо корисно для створення мініатюр зображень.

Python

# Створення мініатюри з максимальними розмірами 400x400 пікселів
image.thumbnail((400, 400))

# Збереження мініатюри
image.save("thumbnail_example.jpg")

Метод thumbnail() змінює зображення "на місці", що означає, що зміни відбуваються у вихідному об'єкті image. Після виконання thumbnail() Pillow зменшить зображення так, щоб його розміри не перевищували 400x400 пікселів, зберігаючи пропорції.

Масштабування з урахуванням пропорцій за допомогою ImageOps.fit()

Іноді необхідно змінити розмір зображення, щоб воно точно відповідало зазначеним розмірам, але при цьому зберегти пропорції, обрізавши зайві частини. У таких випадках можна використовувати метод ImageOps.fit().

Python

from PIL import ImageOps

# Встановлення нового розміру
target_size = (400, 400)
fitted_image = ImageOps.fit(image, target_size, method=Image.LANCZOS)

# Збереження обрізаного зображення
fitted_image.save("fitted_example.jpg")

Метод ImageOps.fit() автоматично обрізає зображення, щоб воно відповідало зазначеним розмірам без спотворень. Наприклад, якщо вихідне зображення — прямокутне, метод обріже краї, щоб воно стало квадратним і відповідало розміру 400x400 пікселів.

3. Приклад повного коду

Нижче наведений приклад коду, який об'єднує всі розглянуті методи — від завантаження до зміни розмірів і збереження зображень.

Python

from PIL import Image, ImageOps

# Відкриваємо зображення
image = Image.open("example.jpg")

# Зміна розміру без збереження пропорцій
resized_image = image.resize((800, 600))
resized_image.save("resized_example.jpg")

# Пропорційне зменшення зображення
image.thumbnail((400, 400))
image.save("thumbnail_example.jpg")

# Масштабування з обрізкою до потрібного розміру
fitted_image = ImageOps.fit(image, (400, 400), method=Image.LANCZOS)
fitted_image.save("fitted_example.jpg")

Пояснення до методів зміни розміру

  1. resize(): дозволяє задати довільні розміри, але може призвести до спотворення зображення, якщо нові розміри не відповідають пропорціям оригіналу.
  2. thumbnail(): змінює розмір зображення, зберігаючи пропорції. Корисно для створення мініатюр і зменшення великих зображень.
  3. ImageOps.fit(): масштабує зображення до зазначених розмірів з обрізкою країв. Застосовується, коли важливо точно відповідати зазначеним розмірам без спотворень.

4. Поради:

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

  1. Оптимізація зображень для веб-сайтів: Великі зображення можуть уповільнювати завантаження сторінки, тому їх важливо оптимізувати, зменшуючи розмір без втрати якості.
  2. Створення мініатюр для галерей: Використання thumbnail() дозволяє швидко створити мініатюри зображень, які можна показувати у попередньому перегляді.
  3. Підгонка зображень під певні розміри: Коли необхідно підлаштувати зображення під фіксовані розміри, наприклад, для аватара або профіля, метод ImageOps.fit() дозволяє обрізати та масштабувати зображення, щоб воно відповідало цим вимогам.

Поради щодо вибору методів

Використовуй resize(), коли потрібно точно вказати ширину і висоту зображення, і тобі неважливо, якщо пропорції зміняться.

Застосовуй thumbnail() для створення мініатюр або коли хочеш зменшити зображення, зберігаючи його пропорції.

Використовуй ImageOps.fit(), коли потрібне зображення певного розміру, але без спотворення пропорцій. Цей метод обрізає зайві частини, що зручно для підгонки зображення під потрібні рамки.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ