1. Добавление текста на изображение
Для добавления текста на изображение в Pillow используется модуль ImageDraw, который предоставляет метод text() для отображения текста на заданных координатах.
Простое добавление текста
from PIL import ImageDraw, ImageFont
# Создаем объект для рисования
draw = ImageDraw.Draw(image)
# Добавление текста на изображение
text = "Пример текста"
draw.text((50, 50), text, fill="white")
# Сохранение изображения с текстом
image.save("text_example.jpg")
В этом примере текст "Пример текста" добавляется на координаты (50, 50). Параметр fill задает цвет текста, который можно указать как строку ("white", "black") или в формате RGB ((255, 255, 255)).
Настройка шрифта текста
По умолчанию Pillow использует стандартный шрифт. Чтобы выбрать другой шрифт и задать его размер, используйте ImageFont.truetype(). Убедитесь, что файл шрифта доступен в вашей системе.
# Загрузка шрифта
font = ImageFont.truetype("arial.ttf", 36)
# Добавление текста с пользовательским шрифтом
draw.text((50, 100), text, font=font, fill="yellow")
image.save("text_custom_font_example.jpg")
Здесь мы используем шрифт arial.ttf с размером 36 пикселей. Если нужного шрифта нет, вы можете загрузить его и указать путь к файлу.
2. Добавление водяного знака
Водяной знак — это полупрозрачный текст или изображение, которое накладывается на фотографию для защиты от копирования. С его помощью можно добавлять логотипы или информацию об авторе. В Pillow можно создать простой текстовый водяной знак.
Текстовый водяной знак
# Создаем объект для рисования
draw = ImageDraw.Draw(image)
# Текст и шрифт для водяного знака
watermark_text = "© 2023 My Company"
font = ImageFont.truetype("arial.ttf", 24)
# Определяем координаты для размещения водяного знака
width, height = image.size
text_width, text_height = draw.textsize(watermark_text, font=font)
x = width - text_width - 10
y = height - text_height - 10
# Добавление водяного знака в правый нижний угол
draw.text((x, y), watermark_text, font=font, fill=(255, 255, 255, 128))
image.save("watermarked_example.jpg")
В этом примере текстовый водяной знак добавляется в правый нижний угол изображения. Мы рассчитываем x и y так, чтобы водяной знак был немного смещен от границы изображения.
3. Добавление графических элементов
Помимо текста, Pillow позволяет рисовать базовые графические элементы, такие как линии, прямоугольники, круги и эллипсы. Это полезно для создания рамок, выделения областей и добавления геометрических фигур.
Рисование линий
Для рисования линий используйте метод line(), который принимает координаты начала и конца линии.
# Рисуем линию от левого верхнего угла к правому нижнему
draw.line((0, 0, width, height), fill="red", width=5)
image.save("line_example.jpg")
Этот код рисует красную линию, проходящую по диагонали от левого верхнего до правого нижнего угла изображения.
Рисование прямоугольников
Прямоугольник рисуется с помощью метода rectangle(), который принимает координаты верхнего левого и нижнего правого углов.
# Рисуем прямоугольник
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
image.save("rectangle_example.jpg")
Здесь создается прямоугольник с синим контуром и толщиной линии 3 пикселя. Вы можете также использовать параметр fill для заливки прямоугольника цветом.
Рисование кругов и эллипсов
Метод ellipse() позволяет рисовать окружности и эллипсы. Чтобы нарисовать окружность, укажите одинаковые размеры для ширины и высоты.
# Рисуем окружность
draw.ellipse((150, 150, 250, 250), outline="green", width=4)
image.save("circle_example.jpg")
В этом примере создается окружность с центром в точке (200, 200). Если задать разные размеры для ширины и высоты, получится эллипс.
Рисование многоугольников
Для рисования многоугольников используйте метод polygon(), который принимает координаты вершин фигуры.
# Рисуем треугольник
draw.polygon([(100, 100), (150, 50), (200, 100)], outline="purple", fill="orange")
image.save("polygon_example.jpg")
Этот код рисует треугольник с оранжевой заливкой и пурпурным контуром. Вы можете создать фигуру любой формы, передав координаты её вершин.
4. Примеры
Пример создания композиции с текстом и графикой
Объединим всё вышеперечисленное и создадим изображение с текстом, водяным знаком и графическими элементами.
from PIL import Image, ImageDraw, ImageFont
# Загрузка изображения
image = Image.open("example.jpg")
draw = ImageDraw.Draw(image)
# Добавление текста
font = ImageFont.truetype("arial.ttf", 36)
draw.text((50, 50), "Demo Text", font=font, fill="yellow")
# Добавление водяного знака в правый нижний угол
watermark_text = "© 2023 My Company"
font_watermark = ImageFont.truetype("arial.ttf", 24)
width, height = image.size
text_width, text_height = draw.textsize(watermark_text, font=font_watermark)
x = width - text_width - 10
y = height - text_height - 10
draw.text((x, y), watermark_text, font=font_watermark, fill=(255, 255, 255, 128))
# Рисование линии, прямоугольника и круга
draw.line((0, 0, width, height), fill="red", width=5)
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
draw.ellipse((150, 150, 250, 250), outline="green", width=4)
# Сохранение результата
image.save("final_composition_example.jpg")
Этот пример создает изображение с текстом, водяным знаком и несколькими графическими элементами (линия, прямоугольник и окружность). Такие композиции могут использоваться для презентаций, блогов и создания профессионально оформленных изображений.
Практическое применение
- Маркировка и защита изображений: Водяные знаки помогают защитить изображения от несанкционированного использования, а текст позволяет добавлять информацию об авторе или компании.
- Подготовка изображений для социальных сетей: Добавление текста и графики позволяет подготовить изображения к публикации, снабдив их дополнительной информацией.
- Инфографика и визуализация данных: Использование графических элементов, таких как линии и фигуры, позволяет создавать простые графики и диаграммы, что делает Pillow полезным для создания инфографики.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ