JavaRush /Курсы /Python SELF /Рисуем: тексты, линии и водяные знаки

Рисуем: тексты, линии и водяные знаки

Python SELF
46 уровень , 0 лекция
Открыта

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 полезным для создания инфографики.
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ