Draw text python pillow

Используем Python Pillow для вставки текста и изображения в картинку

Вставка текста и изображения в картинку с Python Pillow (PIL)

Pillow это одна из самых популярных библиотек Python для работы с изображениями. Ранее эта библиотека называлась PIL и последний ее релиз был в 2009, после чего разработчики продолжили ее развитие под названием Pillow. В этой статье будет рассмотрен пример вставки текста и изображения в новую или существующую картинку.

Pillow устанавливается отдельно:

Создание и открытие изображения

Для открытия и создания изображения используется модуль Image. На следующем примере мы откроем существующее изображение:

from PIL import Image im = Image.open('d:/beach.jpeg') # Откроет изображение в новом окне im.show()

В следующем примере мы создадим изображение, где мы должны указать:

  • Цветовую модель. Например RGB,RGBA,CMYK,HCL и т.д.;
  • Размер изображения в кортеже;
  • По умолчанию изображение создается с черным фоном. Для его изменения нужно заполнить атрибут color.
from PIL import Image im = Image.new('RGB', (200,200), color=('#FAACAC')) # Откроет изображение в новом окне im.show()

Сохранить изображение можно через save:

from PIL import Image im = Image.new('RGB', (200,200), color=('#FAACAC')) im.save('D:/new_pic.jpg')
Модуль Python os — примеры создания и работы с папками и путями

Добавление текста к изображению

Для изменения изображение используется класс ImageDraw. В следующем примере мы создадим объект этого класса с текстом, где нужно указать:

from PIL import Image, ImageDraw im = Image.new('RGB', (200,200), color=('#FAACAC')) draw_text = ImageDraw.Draw(im) draw_text.text( (100,100), 'Test Text', fill=('#1C0606') ) im.show()

Если использовать кириллические символы, может появится ошибка:

  • AttributeError: ‘ImageFont’ object has no attribute ‘getmask2’
  • UnicodeEncodeError: ‘latin-1’ codec can’t encode characters

Для исправления ошибки вы можете использовать свой шрифт через класс ImageFont. Вы так же сможете указать размер шрифта:

from PIL import Image, ImageDraw, ImageFont im = Image.new('RGB', (200,200), color=('#FAACAC')) # Создаем объект со шрифтом font = ImageFont.truetype('D:/Roboto/Roboto-Black.ttf', size=18) draw_text = ImageDraw.Draw(im) draw_text.text( (100, 100), 'Текст 18px', # Добавляем шрифт к изображению font=font, fill='#1C0606') im.show()

Вставка изображения

Для создания водяного знака, например, откройте второе изображение и используйте функцию paste. При этом первый параметр с watermark будет использовать всю область изображения, а второй установит прозрачность (альфа-канал):

from PIL import Image im = Image.open('d:/beach.jpeg') # Изображение для водяного знака watermark = Image.open('d:/logo.png') im.paste(watermark, (25,25), watermark) im.show()

Определение высоты и ширины

Если вы планируете открывать множество изображений, разных размеров и добавлять текст, например в правый нижний угол вы можете вычислить это местоположение. Объекты Image содержат размеры:

# Ширина и высота im.size # Ширина im.width # Высота im.height

Если вы используете водяные знаки, то можно просто вычесть из основного изображения размеры водяного знака и получить корректное расположение в правом угле:

from PIL import Image im = Image.open('d:/beach.jpeg') watermark = Image.open('d:/logo.png') # Вычисляем расположение watermark position = (im.width - watermark.width, im.height - watermark.height) im.paste(watermark, position, watermark) im.show()

Источник

How to add text on an image using pillow in python ?

Example of how to add text on an image using pillow in python:

1 — Create an image with pillow and add text on it

Example 1: let’s for example create a simple image with a red background:

from PIL import Image img = Image.new('RGB', (600, 400), color = 'red') img.save('pil_red.png') 

How to add text on an image using pillow in python ?

To add text, you must first download a ‘font’ file locally to your machine, for example for Times Roman [times-ro.ttf] (https://www.download-free-fonts.com/details/86847/ times-roman) (freely available font files can be found on the web). We can then add text to the figure using the «Times Roman» font like this:

from PIL import Image from PIL import ImageFont from PIL import ImageDraw font = ImageFont.truetype("times-ro.ttf", 24) img = Image.new('RGB', (600, 400), color = 'red') draw = ImageDraw.Draw(img) draw.text((300, 200),"Hello World !",(0,0,0),font=font) img.save('pil_red.png') 

How to add text on an image using pillow in python ?

2 — Use an existing image and add text with pillow

from PIL import Image from PIL import ImageFont from PIL import ImageDraw font = ImageFont.truetype("times-ro.ttf", 34) img = Image.open('eiffel-tower.jpeg') draw = ImageDraw.Draw(img) draw.text((100, 200),"Hello Paris !",(0,0,0),font=font) img.save('eiffel_tower_02.png') 

How to add text on an image using pillow in python ?

3 — References

Benjamin

Greetings, I am Ben! I completed my PhD in Atmospheric Science from the University of Lille, France. Subsequently, for 12 years I was employed at NASA as a Research Scientist focusing on Earth remote sensing. Presently, I work with NOAA concentrating on satellite-based Active Fire detection. Python, Machine Learning and Open Science are special areas of interest to me.

Skills

Источник

Читайте также:  Python if greater than less than
Оцените статью