Подмодуль ImageDraw
предоставляет простую 2D-графику для объектов изображения. Этот модуль можно использовать для создания новых изображений, комментирования или ретуширования существующих изображений, а также для создания графики на лету для использования в Интернете.
ImageDraw
;ImageDraw
.ImageDraw
.Графический интерфейс использует ту же систему координат, что и сам Pillow
, с (0, 0)
в верхнем левом углу. Любые пиксели, нарисованные за пределами изображения, будут отброшены.
Пример :
from PIL import ImageDraw, ImageGrab import time # 2 секунды на выбор # окна для скриншота time.sleep(2) # создание скриншота выбранного окна img = ImageGrab.grab() # сохраним для дальнейшей работы img.save('test1.png') # используем в качестве полотна для # рисования изображение скриншота draw = ImageDraw.Draw(img) # перечеркнем скриншот draw.line((0, 0) + im.size, fill=128, width=3) draw.line((0, im.size[1], im.size[0], 0), fill=128, width=3) # смотрим что получилось img.save('test1.png')
Чтобы указать цвета, можно использовать числа или кортежи так же, как использует функция PIL.Image.new()
или метод Image.putpixel()
. Для изображений 1
, L
и I
используются целые числа. Для изображений RGB
используются тройные кортежи, содержащую целые значения или цветовой хеш (как в web). Для изображений F
используются целые числа или значения float
.
Pillow
может использовать растровые шрифты или шрифты OpenType
/TrueType
.
Растровые шрифты хранятся в собственном формате библиотеки Pillow
, где каждый шрифт обычно состоит из двух файлов, один из которых называется .pil
, а другой - .pbm
. Первый содержит метрики шрифта, второй - растровые данные.
Чтобы загрузить растровый шрифт, необходимо использовать функцию ImageFont.load()
. Чтобы загрузить шрифт OpenType
/TrueType
, необходимо использовать функцию ImageFont.truetype()
. Обратите внимание, что эта функция зависит от сторонних библиотек и может быть недоступна во всех сборках Pillow
.
from PIL import ImageFont, ImageDraw draw = ImageDraw.Draw(image) # растровый шрифт font = ImageFont.load("arial.pil") draw.text((10, 10), "hello", font=font) # TrueType шрифт font = ImageFont.truetype("arial.ttf", 15) draw.text((10, 25), "world", font=font)
from PIL import Image, ImageDraw, ImageFont with Image.open("test.jpg").convert("RGBA") as img: # пустое изображение для текста, инициализировать прозрачным цветом текста txt = Image.new("RGBA", base.size, (255, 255, 255, 0)) # подключаем шрифт fnt = ImageFont.truetype("/usr/share/fonts/truetype/freefont/FreeSans.ttf", size=100) # контекст для рисования d = ImageDraw.Draw(txt) # наносим полупрозрачный текст d.text((10, 10), "DOCS-Python.ru", font=fnt, fill=(255, 255, 255, 128)) # наносим непрозрачный текст d.text((10, 200), "Pillow", font=fnt, fill=(255, 255, 255, 255)) # объединяем оба изображения out = Image.alpha_composite(img, txt) # смотрим что получилось out.save('test_text.png')
from PIL import Image, ImageDraw, ImageFont out = Image.new("RGB", (500, 250), (255, 255, 255)) fnt = ImageFont.truetype("/usr/share/fonts/truetype/freefont/FreeSans.ttf", size=50) d = ImageDraw.Draw(out) # многострочный текст d.multiline_text((100, 100), "Hello\nWorld", font=fnt, fill=(50, 50, 50)) # смотрим что получилось out.save('multiline_text.png')
Якорь привязки задается двухсимвольной строкой. Первый символ - горизонтальное выравнивание, второй - вертикальное выравнивание. Например, значение по умолчанию la
для горизонтального текста означает текст, выровненный по левому краю.
При рисовании текста с помощью ImageDraw.text()
с определенной привязкой (аргумент anchor
), текст будет размещен таким образом, что указанная точка привязки находится в координатах xy
.
Например, для следующего кода справедливо изображение ниже:
from PIL import Image, ImageDraw, ImageFont font = ImageFont.truetype("Tests/fonts/NotoSans-Regular.ttf", 48) im = Image.new("RGB", (200, 200), "white") d = ImageDraw.Draw(im) d.line(((0, 100), (200, 100)), "gray") d.line(((100, 0), (100, 200)), "gray") d.text((100, 100), "Quick", fill="black", anchor="ms", font=font)
На следующем изображении текст выровнен по ms
(средней базовой линии) с xy
на пересечении двух линий:
anchor
с примерами выравнивания:from PIL import ImageDraw draw = ImageDraw.Draw(img, mode=None)
img
- объект изображения для рисования, открытое (PIL.Image.open()
) или созданное при помощи PIL.Image.new()
или другими способами.mode=None
- необязательный режим. Для изображений RGB этот аргумент может быть RGB
или RGBA
(чтобы смешать рисунок с изображением). Для всех остальных режимов этот аргумент должен совпадать с [режимом изображения][]. Если этот параметр опущен, то по умолчанию используется режим исходного изображения.ImageDraw
.Функция ImageDraw.Draw()
модуля Pillow
cоздает объект, который можно использовать для рисования на данном изображении img
.
Обратите внимание, что изображение будет изменено на месте.
ImageDraw
.ImageDraw
:ImageDraw.fill
следует ли использовать ImageDraw.ink
по умолчанию,ImageDraw.font
текущий шрифт по умолчанию,ImageDraw.fontmode
текущий режим рисования шрифтом,ImageDraw.ink
внутреннее представление текущего цвета,ImageDraw
:ImageDraw.getfont()
получает текущий шрифт,ImageDraw.arc()
рисует дугу (часть контура круга),ImageDraw.bitmap()
рисует растровое изображение (маску),ImageDraw.chord()
то же, что и ImageDraw.arc()
, но соединяет конечные точки прямой линией,ImageDraw.ellipse()
рисует эллипс внутри рамки,ImageDraw.line()
рисует линию,ImageDraw.pieslice()
то же, что и ImageDraw.arc()
, но также рисует прямые линии между конечными точками и центром рамки,ImageDraw.point()
рисует точки (отдельные пиксели),ImageDraw.polygon()
рисует произвольный многоугольник,ImageDraw.regular_polygon()
рисует правильный многоугольник,ImageDraw.rectangle()
рисует обычный прямоугольник,ImageDraw.rounded_rectangle()
рисует прямоугольник со скругленными углами,ImageDraw.text()
рисует строку с текстом,ImageDraw.multiline_text()
рисует многострочную строку с текстом,ImageDraw.textsize()
устарел с версии 9.2.0.,ImageDraw.multiline_textsize()
устарел с версии 9.2.0.,ImageDraw.textlength()
вычисляет ширину и высоту заданного текста,ImageDraw.textbbox()
вычисляет ограничивающую рамку заданного текста,ImageDraw.multiline_textbbox()
вычисляет ограничивающую рамку для многострочного текста.ImageDraw
.ImageDraw.fill: bool = False
:Свойство ImageDraw.fill
определяет, следует ли использовать ImageDraw.ink
в качестве цвета заливки или контура.
ImageDraw.font
:Свойство ImageDraw.font
возвращает текущий шрифт по умолчанию.
Может быть установлен для каждого экземпляра ImageDraw
:
from PIL import ImageDraw, ImageFont draw = ImageDraw.Draw(image) draw.font = ImageFont.truetype("path/to/FreeMono.ttf")
Или глобально для всех будущих экземпляров ImageDraw
:
from PIL import ImageDraw, ImageFont ImageDraw.ImageDraw.font = ImageFont.truetype("path/to/FreeMono.ttf")
ImageDraw.fontmode
:Свойство ImageDraw.fontmode
текущий режим рисования шрифтом.
Возвращает/принимает значения:
'L'
- включает сглаживание;'1'
- отключает сглаживание.ImageDraw.ink: int
:Свойство ImageDraw.ink
внутреннее представление текущего цвета по умолчанию.
ImageDraw
.ImageDraw.getfont()
:Метод ImageDraw.getfont()
получает текущий шрифт по умолчанию, смотрите ImageDraw.font
. Возвращает шрифт, установленный по умолчанию для изображения.
Если текущий шрифт по умолчанию - None
, то его можно инициализировать с помощью функции PIL.ImageFont.load_default()
.
ImageDraw.arc(xy, start, end, fill=None, width=0)
:Метод ImageDraw.arc()
рисует дугу (часть контура круга) между начальным start
и конечным end
углами внутри заданной ограничивающей рамки xy
.
Принимаемые аргументы:
xy
: Две точки для определения ограничивающей рамки. Последовательность [(x0, y0), (x1, y1)]
или [x0, y0, x1, y1]
, где x1 >= x0
and y1 >= y0
.start
: Начальный угол, в градусах. Углы измеряются от 3 часов, увеличиваясь по часовой стрелке.end
: Конечный угол, в градусах.fill
: Цвет линии.width
: Толщина линии, в пикселях.ImageDraw.bitmap(xy, bitmap, fill=None)
:Метод ImageDraw.bitmap()
рисует растровое изображение (маску) в заданной позиции, используя текущий цвет заливки для ненулевых частей.
Растровое изображение должно иметь допустимую маску прозрачности (режим '1'
) или изображение с альфа-каналом (режим 'L'
или 'RGBA'
).
Метод эквивалентен выполнению метода Image.paste(xy, color, bitmap)
. Чтобы вставить данные пикселей в изображение, используйте метод Image.paste()
для самого изображения.
ImageDraw.chord(xy, start, end, fill=None, outline=None, width=1)
:Метод ImageDraw.chord()
делает то же, что и ImageDraw.arc()
, но соединяет конечные точки прямой линией.
Принимаемые аргументы:
xy
: Две точки для определения ограничивающей рамки. Последовательность [(x0, y0), (x1, y1)]
или [x0, y0, x1, y1]
, где x1 >= x0
and y1 >= y0
.start
: Начальный угол, в градусах. Углы измеряются от 3 часов, увеличиваясь по часовой стрелке.end
: Конечный угол, в градусах.fill
: Цвет заливки.outline
: Цвет контура.width
: Толщина линии, в пикселях.ImageDraw.ellipse(xy, fill=None, outline=None, width=1)
:Метод ImageDraw.ellipse()
рисует эллипс внутри заданной ограничивающей рамки xy
.
Принимаемые аргументы:
xy
: Две точки для определения ограничивающей рамки. Последовательность [(x0, y0), (x1, y1)]
или [x0, y0, x1, y1]
, где x1 >= x0
and y1 >= y0
.outline
: Цвет контура.fill
: Цвет заливки.width
: Толщина линии, в пикселях.ImageDraw.line(xy, fill=None, width=0, joint=None)
:Метод ImageDraw.line()
рисует линию между координатами в списке xy
.
PARAMETERS:- xy
: Последовательность двойных кортежей с пиксельными координатами, таких как [(x, y), (x, y), ...]
или числовые значения, такие как [x, y, x, y, ...]
.- fill
: Цвет линии.- width
: Толщина линии, в пикселях.- joint
: Тип соединения между последовательностью точек (для ломаной линии). Это может быть 'curve'
(закругленные края) или None
.
ImageDraw.pieslice(xy, start, end, fill=None, outline=None, width=1)
:Метод ImageDraw.pieslice()
делает то же, что и дуга, но также рисует прямые линии между конечными точками и центром ограничивающей рамки xy
.
Принимаемые аргументы:
xy
: Две точки для определения ограничивающей рамки. Последовательность [(x0, y0), (x1, y1)]
или [x0, y0, x1, y1]
, где x1 >= x0
and y1 >= y0
.start
: Начальный угол, в градусах. Углы измеряются от 3 часов, увеличиваясь по часовой стрелке.end
: Конечный угол, в градусах.fill
: Цвет линии.outline
: Цвет контура.width
: Толщина линии, в пикселях.ImageDraw.point(xy, fill=None)
:Метод ImageDraw.point()
рисует точки (отдельные пиксели) по заданным координатам xy
.
Принимаемые аргументы:
xy
: Последовательность двойных кортежей с пиксельными координатами, таких как [(x, y), (x, y), ...]
или числовые значения, такие как [x, y, x, y, ...]
.fill
: – Цвет точки.ImageDraw.polygon(xy, fill=None, outline=None, width=1)
:Метод ImageDraw.polygon()
рисует многоугольник.
Контур многоугольника состоит из прямых линий между заданными координатами и прямой линии между последней и первой координатами.
Принимаемые аргументы:
xy
: Последовательность двойных кортежей с пиксельными координатами, таких как [(x, y), (x, y), ...]
или числовые значения, такие как [x, y, x, y, ...]
.fill
: Цвет заливки.outline
: Цвет контура.width
: Толщина линии, в пикселях.ImageDraw.regular_polygon(bounding_circle, n_sides, rotation=0, fill=None, outline=None)
:Метод ImageDraw.regular_polygon()
рисует правильный многоугольник, вписанный в окружность bounding_circle
, с количеством сторон n_sides
и произвольным вращением rotation
в градусах.
Принимаемые аргументы:
bounding_circle
: ограничивающая окружность, кортеж, определяемый точкой и радиусом. Например, (x, y, r)
или ((x, y), r))
. Многоугольник будет вписан в эту окружность.n_sides
: Количество сторон. Например, n_sides=3
для треугольника, 6 для шестиугольника).rotation
: применяет произвольное вращение к многоугольнику. Например, rotation=90
, применяет поворот на 90 градусов.fill
: Цвет заливки.outline
: Цвет контура.ImageDraw.rectangle(xy, fill=None, outline=None, width=1)
:Метод ImageDraw.rectangle()
рисует обычный прямоугольник.
Принимаемые аргументы:
xy
: Две точки для определения ограничивающей рамки. Последовательность либо [(x0, y0), (x1, y1)]
или [x0, y0, x1, y1]
. Ограничительная рамка включает обе конечные точки.fill
: Цвет заливки.outline
: Цвет контура.width
: Толщина линии, в пикселях.ImageDraw.rounded_rectangle(xy, radius=0, fill=None, outline=None, width=1)
:Метод ImageDraw.rounded_rectangle()
рисует прямоугольник со скругленными углами.
Принимаемые аргументы:
xy
: Две точки для определения ограничивающей рамки. Последовательность либо [(x0, y0), (x1, y1)]
или [x0, y0, x1, y1]
. Ограничительная рамка включает обе конечные точки.radius
: Радиус скругления углов.fill
: Цвет заливки.outline
: Цвет контура.width
: Толщина линии, в пикселях.ImageDraw.text(xy, text, fill=None, font=None, anchor=None, spacing=4, align='left', direction=None, features=None, language=None, stroke_width=0, stroke_fill=None, embedded_color=False)
:Метод ImageDraw.text()
рисует строку с текстом text
в заданном положении xy
.
Принимаемые аргументы:
xy
: Координаты точки привязки текста.text
: Строка с текстом. Если он содержит какие-либо символы новой строки, то текст передается в метод ImageDraw.multiline_text()
.fill
: Цвет текста.font
: Экземпляр ImageFont
.anchor
: определяет выравнивание нарисованного текста относительно параметра xy
. Выравнивание по умолчанию - верхний левый угол, в частности 'la'
(левый восходящий) для горизонтального текста и 'lt'
(левый верхний) для вертикального текста. Этот аргумент поддерживается только шрифтами OpenType
/TrueType
. Другие шрифты могут игнорировать этот параметр и использовать выравнивание по умолчанию (вверху слева).spacing
: Если text
передается в метод ImageDraw.multiline_text()
, то определяет количество пикселей между строкамиalign
: Если text
передается в метод [ImageDraw.multiline_text()
](#ImageDraw.multiline_text, то определяет относительное выравнивание линий. Принимает значения: 'слева'
, 'по центру'
или 'справа'
. direction
: Направление текста. Это может быть 'rtl'
(справа налево), 'ltr'
(слева направо) или 'ttb'
(сверху вниз). Требуется системная библиотека libraqm
.features
: Список функций шрифта OpenType
, которые будут использоваться при верстке текста. Используется для включения дополнительных функций шрифта, которые не включены по умолчанию, например 'dlig'
или 'ss01'
, но также может использоваться для отключения функций шрифта по умолчанию, например '-liga'
(отключить лигатуры) или '-kern'
(отключить кернинг). Требуется системная библиотека libraqm
.language
: Язык текста. В разных языках могут использоваться разные формы глифов или лигатуры. Этот параметр сообщает шрифту, на каком языке написан текст, и о необходимости применения правильных замен, если они доступны. Требуется системная библиотека libraqm
.stroke_width
: Ширина обводки текста.stroke_fill
: Цвет для обводки текста. Если не указано, по умолчанию берется из fill
.embedded_color
: Использовать ли встроенные в шрифт глифы цвета (COLR, CBDT, SBIX).ImageDraw.multiline_text(xy, text, fill=None, font=None, anchor=None, spacing=4, align='left', direction=None, features=None, language=None, stroke_width=0, stroke_fill=None, embedded_color=False)
:Метод ImageDraw.multiline_text()
рисует многострочную строку в заданной позиции xy
.
Принимаемые аргументы:
xy
: Координаты точки привязки текста.text
: Строка с текстом. Если он содержит какие-либо символы новой строки, то текст передается в метод ImageDraw.multiline_text()
.fill
: Цвет текста.font
: Экземпляр ImageFont
.anchor
: определяет выравнивание нарисованного текста относительно параметра xy
. Выравнивание по умолчанию - верхний левый угол, в частности 'la'
(левый восходящий) для горизонтального текста и 'lt'
(левый верхний) для вертикального текста. Этот аргумент поддерживается только шрифтами OpenType
/TrueType
. Другие шрифты могут игнорировать этот параметр и использовать выравнивание по умолчанию (вверху слева).spacing
: Определяет количество пикселей между строками.align
: Определяет относительное выравнивание текста. Принимает значения: 'left'
, 'center'
или 'right'
. direction
: Направление текста. Это может быть 'rtl'
(справа налево), 'ltr'
(слева направо) или 'ttb'
(сверху вниз). Требуется системная библиотека libraqm
.features
: Список функций шрифта OpenType
, которые будут использоваться при верстке текста. Используется для включения дополнительных функций шрифта, которые не включены по умолчанию, например 'dlig'
или 'ss01'
, но также может использоваться для отключения функций шрифта по умолчанию, например '-liga'
(отключить лигатуры) или '-kern'
(отключить кернинг). Требуется системная библиотека libraqm
.language
: Язык текста. В разных языках могут использоваться разные формы глифов или лигатуры. Этот параметр сообщает шрифту, на каком языке написан текст, и о необходимости применения правильных замен, если они доступны. Требуется системная библиотека libraqm
.stroke_width
: Ширина обводки текста.stroke_fill
: Цвет для обводки текста. Если не указано, по умолчанию берется из fill
.embedded_color
: Использовать ли встроенные в шрифт глифы цвета (COLR, CBDT, SBIX).ImageDraw.textsize(text, font=None, spacing=4, direction=None, features=None, language=None, stroke_width=0)
:Метод ImageDraw.textsize()
устарел с версии 9.2.0. Возвращает размер (width, height)
(длина и высота текста) заданной строки text
в пикселях.
- Используйте
ImageDraw.textlength()
для определения размера(width, height)
текста в пикселях с точностью 1/64 пикселя.- Используйте
ImageDraw.textbbox()
, чтобы получить точные координаты ограничивающей рамки на основе привязки.
ImageDraw.multiline_textsize(text, font=None, spacing=4, direction=None, features=None, language=None, stroke_width=0)
:Метод ImageDraw.multiline_textsize()
устарел с версии 9.2.0. Возвращает размер (width, height)
(длина и высота текста) заданной многострочной строки text
в пикселях.
Используйте
ImageDraw.multiline_textbbox()
, чтобы получить точные координаты ограничивающей рамки на основе привязки.
ImageDraw.textlength(text, font=None, direction=None, features=None, language=None, embedded_color=False)
:Метод ImageDraw.textlength()
возвращает ширина по горизонтали и высота по вертикали (в пикселях с точностью 1/64) заданного текста text
при отображении шрифтом font
с заданным направлением direction
, функциями features
и языком language
.
Это величина, на которую следует смещать следующий текст. Ограничивающая рамка текста может выходить за пределы длины в некоторых шрифтах, например, при использовании курсива.
Результат возвращается как число float
или как целое число int
, если используется базовая раскладка.
Обратите внимание, что сумма двух длин может не равняться длине объединенной строки из-за кернинга. Если нужно настроить кернинг, то включите в передаваемую строку следующий символ и вычтите его длину.
Например, не скорректировано для кернинга:
hello = draw.textlength("Hello", font) world = draw.textlength("World", font) # не скорректировано для кернинга hello_world = hello + world assert hello_world == draw.textlength("HelloWorld", font)
Пример с поправкой на кернинг:
# с поправкой на кернинг hello = draw.textlength("HelloW", font) - draw.textlength("W", font) world = draw.textlength("World", font) # скорректировано для кернинга hello_world = hello + world assert hello_world == draw.textlength("HelloWorld", font)
или отключить кернинг:
hello = draw.textlength("Hello", font, features=["-kern"]) world = draw.textlength("World", font, features=["-kern"]) # кернинг отключен, настраивать не нужно hello_world = hello + world assert hello_world == draw.textlength("HelloWorld", font, features=["-kern"])
Принимаемые аргументы:
text
: Текст для измерения. Недолжен содержать символы новой строки '\n'
.direction
: Направление текста. Это может быть 'rtl'
(справа налево), 'ltr'
(слева направо) или 'ttb'
(сверху вниз). Требуется системная библиотека libraqm
.features
: Список функций шрифта OpenType
, которые будут использоваться при верстке текста. Используется для включения дополнительных функций шрифта, которые не включены по умолчанию, например 'dlig'
или 'ss01'
, но также может использоваться для отключения функций шрифта по умолчанию, например '-liga'
(отключить лигатуры) или '-kern'
(отключить кернинг). Требуется системная библиотека libraqm
.language
: Язык текста. В разных языках могут использоваться разные формы глифов или лигатуры. Этот параметр сообщает шрифту, на каком языке написан текст, и о необходимости применения правильных замен, если они доступны. Требуется системная библиотека libraqm
.embedded_color
: Использовать ли встроенные в шрифт глифы цвета (COLR, CBDT, SBIX).ImageDraw.textbbox(xy, text, font=None, anchor=None, spacing=4, align='left', direction=None, features=None, language=None, stroke_width=0, embedded_color=False)
:Метод ImageDraw.textbbox()
возвращает ограничивающую рамку (left, top, right, bottom)
(в пикселях) заданного текста text
относительно заданной привязки xy
при отображении шрифтом font
с заданным направлением direction
, функциями features
и языком language
. Поддерживается только для шрифтов TrueType
.
Используйте ImageDraw.textlength()
, чтобы получить смещение следующего текста с точностью 1/64 пикселя. Ограничительная рамка включает дополнительные поля для некоторых шрифтов, например, курсив.
Принимаемые аргументы:
xy
: Координаты точки привязки текста.text
: Текст для измерения. Если он содержит какие-либо символы новой строки, текст передается методу ImageDraw.multiline_textbbox()
.font
: Экземпляр ImageFont
.anchor
: определяет выравнивание нарисованного текста относительно параметра xy
. Выравнивание по умолчанию - верхний левый угол, в частности 'la'
(левый восходящий) для горизонтального текста и 'lt'
(левый верхний) для вертикального текста. Этот аргумент поддерживается только шрифтами OpenType
/TrueType
. Другие шрифты могут игнорировать этот параметр и использовать выравнивание по умолчанию (вверху слева).spacing
: Если текст передается в ImageDraw.multiline_textbbox()
, то определяет количество пикселей между строками.align
: Если текст передается в ImageDraw.multiline_textbbox()
, то определяет относительное выравнивание текста. Принимает значения: 'left'
, 'center'
или 'right'
. direction
: Направление текста. Это может быть 'rtl'
(справа налево), 'ltr'
(слева направо) или 'ttb'
(сверху вниз). Требуется системная библиотека libraqm
.features
: Список функций шрифта OpenType
, которые будут использоваться при верстке текста. Используется для включения дополнительных функций шрифта, которые не включены по умолчанию, например 'dlig'
или 'ss01'
, но также может использоваться для отключения функций шрифта по умолчанию, например '-liga'
(отключить лигатуры) или '-kern'
(отключить кернинг). Требуется системная библиотека libraqm
.language
: Язык текста. В разных языках могут использоваться разные формы глифов или лигатуры. Этот параметр сообщает шрифту, на каком языке написан текст, и о необходимости применения правильных замен, если они доступны. Требуется системная библиотека libraqm
.stroke_width
: Ширина обводки текста.embedded_color
: Использовать ли встроенные в шрифт глифы цвета (COLR, CBDT, SBIX).ImageDraw.multiline_textbbox(xy, text, font=None, anchor=None, spacing=4, align='left', direction=None, features=None, language=None, stroke_width=0, embedded_color=False)
:Метод ImageDraw.multiline_textbbox()
возвращает ограничивающую рамку (left, top, right, bottom)
(в пикселях) заданного многострочного текста text
относительно заданной привязки xy
при отображении шрифтом font
с заданным направлением direction
, функциями features
и языком language
. Поддерживается только для шрифтов TrueType
.
Возвращает ограничивающую рамку (в пикселях) заданного текста относительно заданной привязки xy
при отображении шрифтом с заданным направлением, функциями и языком. Поддерживается только для шрифтов TrueType.
Используйте ImageDraw.textlength()
, чтобы получить смещение следующего текста с точностью 1/64 пикселя. Ограничительная рамка включает дополнительные поля для некоторых шрифтов, например, курсив.
Принимаемые аргументы:
xy
: Координаты точки привязки текста.text
: Текст для измерения. Если он содержит какие-либо символы новой строки, текст передается методу ImageDraw.multiline_textbbox()
.font
: Экземпляр ImageFont
.anchor
: Выравнивание нарисованного текста относительно параметра xy
. Выравнивание по умолчанию - верхний левый угол, в частности 'la'
(левый восходящий) для горизонтального текста и 'lt'
(левый верхний) для вертикального текста. Этот аргумент поддерживается только шрифтами OpenType
/TrueType
. Другие шрифты могут игнорировать этот параметр и использовать выравнивание по умолчанию (вверху слева).spacing
: Количество пикселей между строками.align
: Относительное выравнивание текста. Принимает значения: 'left'
, 'center'
или 'right'
. direction
: Направление текста. Это может быть 'rtl'
(справа налево), 'ltr'
(слева направо) или 'ttb'
(сверху вниз). Требуется системная библиотека libraqm
.features
: Список функций шрифта OpenType
, которые будут использоваться при верстке текста. Используется для включения дополнительных функций шрифта, которые не включены по умолчанию, например 'dlig'
или 'ss01'
, но также может использоваться для отключения функций шрифта по умолчанию, например '-liga'
(отключить лигатуры) или '-kern'
(отключить кернинг). Требуется системная библиотека libraqm
.language
: Язык текста. В разных языках могут использоваться разные формы глифов или лигатуры. Этот параметр сообщает шрифту, на каком языке написан текст, и о необходимости применения правильных замен, если они доступны. Требуется системная библиотека libraqm
.stroke_width
: Ширина обводки текста.embedded_color
: Использовать ли встроенные в шрифт глифы цвета (COLR, CBDT, SBIX).