На этом шаге мы рассмотрим вывод текста средствами этой библиотеки.
Что касается библиотеки wand, то вывести текст на изображение позволяет также метод text() класса Drawing. Формат метода:
text (<X>, <Y>, <Выводимый текст>)
Первые два параметра задают горизонтальную и вертикальную координаты точки, в которой начнется вывод текста.
Для указания параметров выводимого текста применяются следующие атрибуты класса Drawing:
from wand.drawing import Drawing, STYLE_TYPES draw = Drawing() draw.font = r"C:\Windows\Fonts\arial.ttf" draw.font_size =24 draw.font_weight = 700 draw.font_style = STYLE_TYPES [2]
from wand.drawing import TEXT_ALIGN_TYPES, TEXT_DECORATION_TYPES draw.text_alignment = TEXT_ALIGN_TYPES [3] draw.text_decoration = TEXT_DECORATION_TYPES [2]
Выведем текст на русском языке с помощью библиотеки Wand.
from wand.image import Image as WandImage from wand.color import Color from wand.drawing import Drawing, STYLE_TYPES, TEXT_ALIGN_TYPES, TEXT_DECORATION_TYPES from wand.display import display img = WandImage(width = 400, height = 300, background = Color("white") ) draw = Drawing() draw.stroke_color = Color ("blue") draw.fill_color = Color ("yellow") draw.font = r"C:\Windows\Fonts\verdana.ttf" draw.font_size = 32 draw.font_weight = 700 draw.font_style = STYLE_TYPES[2] draw.text_alignment = TEXT_ALIGN_TYPES[2] draw.text_decoration = TEXT_DECORATION_TYPES[2] draw.text(200, 150, "Привет, мир!") draw.draw(img) display(img)
Результат работы приложения изображен на рисунке 1.
Рис.1. Вывод текста с помощью библиотеки Wand
Получить размеры прямоугольника, в который будет вписана надпись, в wand позволяет метод get_font_metrics() класса Drawing. Формат метода:
textsize (<Изображение>, <Строка>)
Изображение должно представляться объектом класса Image. Метод возвращает в качестве результата объект класса FontMetrics, объявленного в модуле wand.drawing. Из атрибутов этого класса нас интересуют следующие:
Пример:
>>> fm = draw.get_font_metrics (img, "Привет, мир!") >>> print (fm.text_width, fm.text_height) 216.0 39.0
На следующем шаге мы рассмотрим создание скриншотов.