Реклама ООО Таймвэб
Реклама ООО Таймвэб

Обработка и генерация изображений в Python. Библиотека Pillow

2 комментария
Обработка и генерация изображений в Python. Библиотека Pillow

Нередко нам нужно изменить размер картинки, кропнуть ее, наложить текст и так далее. Все это можно автоматизировать с помощью Python и библиотеки Pillow.

Установка Pillow

Установка производится через pip3. Вводим в консоль:

pip3 install pillow
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться

Начало работы с библиотекой

Для начала нам нужно инициализировать библиотеку в нашем скрипте:

from PIL import Image

В папку со скриптом поместим произвольное изображение. Файл назовем test.jpg

Теперь откроем изображение через метод в библиотеке:

from PIL import Image
img = Image.open('test.jpg')
img.show() 

На экране у нас отобразилось изображение, которое мы добавили в папку:

Pillow Python

Для просмотра основной информации об изображении с помощью Pillow используем следующие методы: 

from PIL import Image
img = Image.open('test.jpg')
print(img.format) # Просмотр формата изображения. Выведет 'JPEG'
print(img.mode) # Просмотр типа цветового пространства. Выведет 'RGB'
print(img.size) # Просмотр размера изображения. Выведет (568, 305)
print(img.filename) # Просмотр имени файла. Выведет 'test.jpg'
r, g, b = img.split()
histogram = img.histogram()
print(histogram) # Просмотр значений RGB изображения. Выведет 1750, 255, 267, 237, 276, 299…

Обрезка изображений

В Pillow есть методы для кропа (обрезки) изображений. Обрежем наше изображение с помощью метода crop(), передав в параметры координаты обрезки:

from PIL import Image
img = Image.open('test.jpg')
cropped = img.crop((0, 0, 100, 200))
cropped.save('cropped_test.jpg')
img = Image.open('cropped_test.jpg')
img.show()

После выполнения данного кода, получим следующее изображение:

Фото в Pillow Python

Поворот изображений

С помощью метода Image.rotate() мы можем поворачивать изображение как нам угодно. В скобках указываем количество градусов, на которое нужно повернуть изображение. Рассмотрим на примере:

from PIL import Image
img = Image.open('test.jpg')
rotated = img.rotate(180)
rotated.save('rotated_test.jpg')
img = Image.open('rotated_test.jpg')
img.show()

Получим:

Поворот изображений в Pillow Python

Конвертируем из JPG в PNG с помощью Pillow

Для конвертации нам понадобится открыть изображение и просто сохранить его в другом формате. Рассмотрим на примере:

from PIL import Image
img = Image.open('test.jpg')
img.save('test_png.png', 'png')

Получаем такое же изображение, но в формате PNG.

Изменение размера изображений

Чтобы изменить размер изображения используем метод resize(). Рассмотрим это на примере:

from PIL import Image
img = Image.open('test.jpg')
img = img.resize((170, 100), Image.ANTIALIAS)
img.save('test_text.jpg')
img = Image.open('test_text.jpg')
img.show()

Получим:

Кроп в Pillow Python

Пишем текст на изображениях

Для наложения текста на изображение в Pillow существует метод text(), но для начала нужно добавить шрифт. Рассмотрим на примере:

from PIL import Image, ImageDraw, ImageFont
img = Image.open('test.jpg')
font = ImageFont.truetype("arial.ttf", size=20)
idraw = ImageDraw.Draw(img)
idraw.text((25, 25), 'TEST test TeSt', font=font)
img.save('test_text.jpg')
img = Image.open('test_text.jpg')
img.show()

Получим изображение с текстом:

Текст на изображении - Pillow Python

Генерация пустого изображения

Для создания пустого холста (изображения) используем метод Image.new(). Рассмотрим на примере:

from PIL import Image, ImageDraw, ImageFont
img = Image.new('RGB', (200, 200), 'black')
img.save('test1.jpg')
img = Image.open('test1.jpg')
img.show()

Получаем черный квадрат:

Работа с Pillow Python

Теперь давайте нарисуем на этом квадрате белый прямоугольник:

from PIL import Image, ImageDraw, ImageFont
img = Image.new('RGB', (200, 200), 'black')
idraw = ImageDraw.Draw(img)
idraw.rectangle((0, 0, 100, 100), fill='white')
img.save('test1.jpg')
img = Image.open('test1.jpg')
img.show()

Получим:

Рисование в Pillow Python

Вывод

Мы разобрали основные методы библиотеки Pillow в Python: научились писать текст на изображениях, изменять размер, поворачивать их и даже обрезать.

Надеюсь, статья была полезна для вас. Удачи!

Hello World! Гайды и обзоры для девелоперов разных мастей.

Комментарии

Подскажите, как одно изображение наложить на другое? Типа аватарку вставить в открытку.
Свернуть ответы
ByFox 0
18 июля в 2023
with Image.open("test.png") as img:
img.load()
with Image.open("test.jps") as test:
test.load()
вот пример
С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
С помощью соцсетей
У меня уже есть аккаунт Войти
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте