Нередко нам нужно изменить размер картинки, кропнуть ее, наложить текст и так далее. Все это можно автоматизировать с помощью Python и библиотеки Pillow.
Установка Pillow
Установка производится через pip3. Вводим в консоль:
pip3 install pillow
Начало работы с библиотекой
Для начала нам нужно инициализировать библиотеку в нашем скрипте:
from PIL import Image
В папку со скриптом поместим произвольное изображение. Файл назовем test.jpg.
Теперь откроем изображение через метод в библиотеке:
from PIL import Image img = Image.open('test.jpg') img.show()
На экране у нас отобразилось изображение, которое мы добавили в папку:
Для просмотра основной информации об изображении с помощью 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()
После выполнения данного кода, получим следующее изображение:
Поворот изображений
С помощью метода 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()
Получим:
Конвертируем из 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 существует метод 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()
Получим изображение с текстом:
Генерация пустого изображения
Для создания пустого холста (изображения) используем метод 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()
Получаем черный квадрат:
Теперь давайте нарисуем на этом квадрате белый прямоугольник:
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: научились писать текст на изображениях, изменять размер, поворачивать их и даже обрезать.
Надеюсь, статья была полезна для вас. Удачи!
Комментарии
img.load()
with Image.open("test.jps") as test:
test.load()
вот пример