2013-10-12 11:52:01 +04:00
|
|
|
|
.. py:module:: PIL.ImageDraw
|
|
|
|
|
.. py:currentmodule:: PIL.ImageDraw
|
|
|
|
|
|
2020-06-22 06:52:50 +03:00
|
|
|
|
:py:mod:`~PIL.ImageDraw` Module
|
|
|
|
|
===============================
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
2020-06-22 06:52:50 +03:00
|
|
|
|
The :py:mod:`~PIL.ImageDraw` module provides simple 2D graphics for
|
2013-10-12 11:52:01 +04:00
|
|
|
|
:py:class:`~PIL.Image.Image` objects. You can use this module to create new
|
|
|
|
|
images, annotate or retouch existing images, and to generate graphics on the
|
|
|
|
|
fly for web use.
|
|
|
|
|
|
|
|
|
|
For a more advanced drawing library for PIL, see the `aggdraw module`_.
|
|
|
|
|
|
2017-10-23 18:45:57 +03:00
|
|
|
|
.. _aggdraw module: https://github.com/pytroll/aggdraw
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
|
|
|
|
Example: Draw a gray cross over an image
|
|
|
|
|
----------------------------------------
|
|
|
|
|
|
2023-02-24 00:17:10 +03:00
|
|
|
|
::
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
2021-04-25 05:40:31 +03:00
|
|
|
|
import sys
|
2013-10-13 00:53:31 +04:00
|
|
|
|
from PIL import Image, ImageDraw
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
2020-02-29 02:29:44 +03:00
|
|
|
|
with Image.open("hopper.jpg") as im:
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
2020-02-29 02:29:44 +03:00
|
|
|
|
draw = ImageDraw.Draw(im)
|
|
|
|
|
draw.line((0, 0) + im.size, fill=128)
|
|
|
|
|
draw.line((0, im.size[1], im.size[0], 0), fill=128)
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
2020-02-29 02:29:44 +03:00
|
|
|
|
# write to stdout
|
|
|
|
|
im.save(sys.stdout, "PNG")
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Concepts
|
|
|
|
|
--------
|
|
|
|
|
|
|
|
|
|
Coordinates
|
|
|
|
|
^^^^^^^^^^^
|
|
|
|
|
|
|
|
|
|
The graphics interface uses the same coordinate system as PIL itself, with (0,
|
2019-01-27 14:10:54 +03:00
|
|
|
|
0) in the upper left corner. Any pixels drawn outside of the image bounds will
|
|
|
|
|
be discarded.
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
|
|
|
|
Colors
|
|
|
|
|
^^^^^^
|
|
|
|
|
|
|
|
|
|
To specify colors, you can use numbers or tuples just as you would use with
|
2018-02-14 12:09:00 +03:00
|
|
|
|
:py:meth:`PIL.Image.new` or :py:meth:`PIL.Image.Image.putpixel`. For “1”,
|
2013-10-12 11:52:01 +04:00
|
|
|
|
“L”, and “I” images, use integers. For “RGB” images, use a 3-tuple containing
|
|
|
|
|
integer values. For “F” images, use integer or floating point values.
|
|
|
|
|
|
|
|
|
|
For palette images (mode “P”), use integers as color indexes. In 1.1.4 and
|
|
|
|
|
later, you can also use RGB 3-tuples or color names (see below). The drawing
|
|
|
|
|
layer will automatically assign color indexes, as long as you don’t draw with
|
|
|
|
|
more than 256 colors.
|
|
|
|
|
|
|
|
|
|
Color Names
|
|
|
|
|
^^^^^^^^^^^
|
|
|
|
|
|
|
|
|
|
See :ref:`color-names` for the color names supported by Pillow.
|
|
|
|
|
|
|
|
|
|
Fonts
|
|
|
|
|
^^^^^
|
|
|
|
|
|
|
|
|
|
PIL can use bitmap fonts or OpenType/TrueType fonts.
|
|
|
|
|
|
2022-08-11 03:35:44 +03:00
|
|
|
|
Bitmap fonts are stored in PIL's own format, where each font typically consists
|
2017-06-21 07:44:06 +03:00
|
|
|
|
of two files, one named .pil and the other usually named .pbm. The former
|
2013-10-12 11:52:01 +04:00
|
|
|
|
contains font metrics, the latter raster data.
|
|
|
|
|
|
|
|
|
|
To load a bitmap font, use the load functions in the :py:mod:`~PIL.ImageFont`
|
|
|
|
|
module.
|
|
|
|
|
|
|
|
|
|
To load a OpenType/TrueType font, use the truetype function in the
|
|
|
|
|
:py:mod:`~PIL.ImageFont` module. Note that this function depends on third-party
|
|
|
|
|
libraries, and may not available in all PIL builds.
|
|
|
|
|
|
2014-07-23 03:43:08 +04:00
|
|
|
|
Example: Draw Partial Opacity Text
|
|
|
|
|
----------------------------------
|
|
|
|
|
|
2023-02-24 00:17:10 +03:00
|
|
|
|
::
|
2014-07-23 03:43:08 +04:00
|
|
|
|
|
|
|
|
|
from PIL import Image, ImageDraw, ImageFont
|
2021-12-03 23:50:08 +03:00
|
|
|
|
|
2014-07-23 03:43:08 +04:00
|
|
|
|
# get an image
|
2021-02-25 15:41:31 +03:00
|
|
|
|
with Image.open("Pillow/Tests/images/hopper.png").convert("RGBA") as base:
|
2014-07-23 03:43:08 +04:00
|
|
|
|
|
2021-02-25 15:41:31 +03:00
|
|
|
|
# make a blank image for the text, initialized to transparent text color
|
2021-12-03 23:50:08 +03:00
|
|
|
|
txt = Image.new("RGBA", base.size, (255, 255, 255, 0))
|
2014-07-23 03:43:08 +04:00
|
|
|
|
|
2021-02-25 15:41:31 +03:00
|
|
|
|
# get a font
|
|
|
|
|
fnt = ImageFont.truetype("Pillow/Tests/fonts/FreeMono.ttf", 40)
|
|
|
|
|
# get a drawing context
|
|
|
|
|
d = ImageDraw.Draw(txt)
|
2014-07-23 03:43:08 +04:00
|
|
|
|
|
2021-02-25 15:41:31 +03:00
|
|
|
|
# draw text, half opacity
|
2021-12-03 23:50:08 +03:00
|
|
|
|
d.text((10, 10), "Hello", font=fnt, fill=(255, 255, 255, 128))
|
2021-02-25 15:41:31 +03:00
|
|
|
|
# draw text, full opacity
|
2021-12-03 23:50:08 +03:00
|
|
|
|
d.text((10, 60), "World", font=fnt, fill=(255, 255, 255, 255))
|
2014-07-23 03:43:08 +04:00
|
|
|
|
|
2021-02-25 15:41:31 +03:00
|
|
|
|
out = Image.alpha_composite(base, txt)
|
2014-07-23 03:43:08 +04:00
|
|
|
|
|
2021-02-25 15:41:31 +03:00
|
|
|
|
out.show()
|
2014-07-23 03:43:08 +04:00
|
|
|
|
|
2020-04-12 08:11:29 +03:00
|
|
|
|
Example: Draw Multiline Text
|
|
|
|
|
----------------------------
|
|
|
|
|
|
2023-02-24 00:17:10 +03:00
|
|
|
|
::
|
2020-04-12 08:11:29 +03:00
|
|
|
|
|
|
|
|
|
from PIL import Image, ImageDraw, ImageFont
|
|
|
|
|
|
|
|
|
|
# create an image
|
|
|
|
|
out = Image.new("RGB", (150, 100), (255, 255, 255))
|
|
|
|
|
|
|
|
|
|
# get a font
|
|
|
|
|
fnt = ImageFont.truetype("Pillow/Tests/fonts/FreeMono.ttf", 40)
|
|
|
|
|
# get a drawing context
|
|
|
|
|
d = ImageDraw.Draw(out)
|
|
|
|
|
|
|
|
|
|
# draw multiline text
|
2021-12-03 23:50:08 +03:00
|
|
|
|
d.multiline_text((10, 10), "Hello\nWorld", font=fnt, fill=(0, 0, 0))
|
2020-04-12 08:11:29 +03:00
|
|
|
|
|
|
|
|
|
out.show()
|
2014-07-23 03:43:08 +04:00
|
|
|
|
|
|
|
|
|
|
2013-10-12 11:52:01 +04:00
|
|
|
|
Functions
|
|
|
|
|
---------
|
|
|
|
|
|
2020-06-14 15:39:48 +03:00
|
|
|
|
.. py:method:: Draw(im, mode=None)
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
|
|
|
|
Creates an object that can be used to draw in the given image.
|
|
|
|
|
|
|
|
|
|
Note that the image will be modified in place.
|
|
|
|
|
|
2014-07-23 03:43:08 +04:00
|
|
|
|
:param im: The image to draw in.
|
|
|
|
|
:param mode: Optional mode to use for color values. For RGB
|
|
|
|
|
images, this argument can be RGB or RGBA (to blend the
|
|
|
|
|
drawing into the image). For all other modes, this argument
|
|
|
|
|
must be the same as the image mode. If omitted, the mode
|
|
|
|
|
defaults to the mode of the image.
|
|
|
|
|
|
2022-08-25 01:21:55 +03:00
|
|
|
|
Attributes
|
|
|
|
|
----------
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
2022-08-25 01:21:55 +03:00
|
|
|
|
.. py:attribute:: ImageDraw.fill
|
|
|
|
|
:type: bool
|
|
|
|
|
:value: False
|
|
|
|
|
|
|
|
|
|
Selects whether :py:attr:`ImageDraw.ink` should be used as a fill or outline color.
|
|
|
|
|
|
|
|
|
|
.. py:attribute:: ImageDraw.font
|
2017-07-16 08:22:46 +03:00
|
|
|
|
|
2022-08-25 01:21:55 +03:00
|
|
|
|
The current default font.
|
2017-07-16 08:22:46 +03:00
|
|
|
|
|
2022-08-25 01:21:55 +03:00
|
|
|
|
Can be set per instance::
|
|
|
|
|
|
|
|
|
|
from PIL import ImageDraw, ImageFont
|
|
|
|
|
draw = ImageDraw.Draw(image)
|
|
|
|
|
draw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf")
|
|
|
|
|
|
|
|
|
|
Or globally for all future ImageDraw instances::
|
2022-08-11 03:35:44 +03:00
|
|
|
|
|
|
|
|
|
from PIL import ImageDraw, ImageFont
|
|
|
|
|
ImageDraw.ImageDraw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf")
|
|
|
|
|
|
2022-08-25 01:21:55 +03:00
|
|
|
|
.. py:attribute:: ImageDraw.fontmode
|
|
|
|
|
|
|
|
|
|
The current font drawing mode.
|
|
|
|
|
|
|
|
|
|
Set to ``"1"`` to disable antialiasing or ``"L"`` to enable it.
|
|
|
|
|
|
|
|
|
|
.. py:attribute:: ImageDraw.ink
|
|
|
|
|
:type: int
|
|
|
|
|
|
|
|
|
|
The internal representation of the current default color.
|
|
|
|
|
|
|
|
|
|
Methods
|
|
|
|
|
-------
|
|
|
|
|
|
|
|
|
|
.. py:method:: ImageDraw.getfont()
|
|
|
|
|
|
|
|
|
|
Get the current default font, :py:attr:`ImageDraw.font`.
|
|
|
|
|
|
|
|
|
|
If the current default font is ``None``,
|
|
|
|
|
it is initialized with :py:func:`.ImageFont.load_default`.
|
|
|
|
|
|
2017-07-16 08:22:46 +03:00
|
|
|
|
:returns: An image font.
|
|
|
|
|
|
2020-06-14 15:39:48 +03:00
|
|
|
|
.. py:method:: ImageDraw.arc(xy, start, end, fill=None, width=0)
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
|
|
|
|
Draws an arc (a portion of a circle outline) between the start and end
|
|
|
|
|
angles, inside the given bounding box.
|
|
|
|
|
|
2019-07-07 03:12:09 +03:00
|
|
|
|
:param xy: Two points to define the bounding box. Sequence of ``[(x0, y0),
|
|
|
|
|
(x1, y1)]`` or ``[x0, y0, x1, y1]``, where ``x1 >= x0`` and ``y1 >=
|
|
|
|
|
y0``.
|
|
|
|
|
:param start: Starting angle, in degrees. Angles are measured from 3
|
|
|
|
|
o'clock, increasing clockwise.
|
2014-05-28 00:55:43 +04:00
|
|
|
|
:param end: Ending angle, in degrees.
|
2014-05-20 23:59:31 +04:00
|
|
|
|
:param fill: Color to use for the arc.
|
2018-04-13 08:37:54 +03:00
|
|
|
|
:param width: The line width, in pixels.
|
|
|
|
|
|
2018-09-16 23:41:24 +03:00
|
|
|
|
.. versionadded:: 5.3.0
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
2020-06-14 15:39:48 +03:00
|
|
|
|
.. py:method:: ImageDraw.bitmap(xy, bitmap, fill=None)
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
|
|
|
|
Draws a bitmap (mask) at the given position, using the current fill color
|
|
|
|
|
for the non-zero portions. The bitmap should be a valid transparency mask
|
|
|
|
|
(mode “1”) or matte (mode “L” or “RGBA”).
|
|
|
|
|
|
|
|
|
|
This is equivalent to doing ``image.paste(xy, color, bitmap)``.
|
|
|
|
|
|
|
|
|
|
To paste pixel data into an image, use the
|
|
|
|
|
:py:meth:`~PIL.Image.Image.paste` method on the image itself.
|
|
|
|
|
|
2020-06-14 15:39:48 +03:00
|
|
|
|
.. py:method:: ImageDraw.chord(xy, start, end, fill=None, outline=None, width=1)
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
2017-07-16 08:21:26 +03:00
|
|
|
|
Same as :py:meth:`~PIL.ImageDraw.ImageDraw.arc`, but connects the end points
|
2013-10-12 11:52:01 +04:00
|
|
|
|
with a straight line.
|
|
|
|
|
|
2019-07-07 03:12:09 +03:00
|
|
|
|
:param xy: Two points to define the bounding box. Sequence of ``[(x0, y0),
|
|
|
|
|
(x1, y1)]`` or ``[x0, y0, x1, y1]``, where ``x1 >= x0`` and ``y1 >=
|
|
|
|
|
y0``.
|
2013-10-12 11:52:01 +04:00
|
|
|
|
:param outline: Color to use for the outline.
|
|
|
|
|
:param fill: Color to use for the fill.
|
2018-04-13 08:37:54 +03:00
|
|
|
|
:param width: The line width, in pixels.
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
2018-09-16 23:41:24 +03:00
|
|
|
|
.. versionadded:: 5.3.0
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
2020-06-14 15:39:48 +03:00
|
|
|
|
.. py:method:: ImageDraw.ellipse(xy, fill=None, outline=None, width=1)
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
|
|
|
|
Draws an ellipse inside the given bounding box.
|
|
|
|
|
|
2017-11-15 13:25:03 +03:00
|
|
|
|
:param xy: Two points to define the bounding box. Sequence of either
|
2019-07-07 03:12:09 +03:00
|
|
|
|
``[(x0, y0), (x1, y1)]`` or ``[x0, y0, x1, y1]``, where ``x1 >= x0``
|
|
|
|
|
and ``y1 >= y0``.
|
2013-10-12 11:52:01 +04:00
|
|
|
|
:param outline: Color to use for the outline.
|
|
|
|
|
:param fill: Color to use for the fill.
|
2018-04-13 08:37:54 +03:00
|
|
|
|
:param width: The line width, in pixels.
|
|
|
|
|
|
2018-09-16 23:41:24 +03:00
|
|
|
|
.. versionadded:: 5.3.0
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
2024-05-27 01:23:16 +03:00
|
|
|
|
.. py:method:: ImageDraw.circle(xy, radius, fill=None, outline=None, width=1)
|
|
|
|
|
|
|
|
|
|
Draws a circle given the center coordinates and a radius.
|
2024-05-27 14:18:47 +03:00
|
|
|
|
|
|
|
|
|
.. versionadded:: 10.4.0
|
2024-05-27 01:23:16 +03:00
|
|
|
|
|
|
|
|
|
:param xy: One point to define the circle center. Sequence:
|
|
|
|
|
``[x, y]``
|
|
|
|
|
:param radius: Radius of the circle
|
|
|
|
|
:param outline: Color to use for the outline.
|
|
|
|
|
:param fill: Color to use for the fill.
|
|
|
|
|
:param width: The line width, in pixels.
|
|
|
|
|
|
2024-05-27 13:57:50 +03:00
|
|
|
|
.. versionadded:: 10.4.0
|
2024-05-27 01:23:16 +03:00
|
|
|
|
|
2020-06-14 15:39:48 +03:00
|
|
|
|
.. py:method:: ImageDraw.line(xy, fill=None, width=0, joint=None)
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
2020-06-14 15:39:48 +03:00
|
|
|
|
Draws a line between the coordinates in the ``xy`` list.
|
2023-05-08 14:16:34 +03:00
|
|
|
|
The coordinate pixels are included in the drawn line.
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
|
|
|
|
:param xy: Sequence of either 2-tuples like ``[(x, y), (x, y), ...]`` or
|
|
|
|
|
numeric values like ``[x, y, x, y, ...]``.
|
|
|
|
|
:param fill: Color to use for the line.
|
2018-09-16 14:29:09 +03:00
|
|
|
|
:param width: The line width, in pixels.
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
|
|
|
|
.. versionadded:: 1.1.5
|
|
|
|
|
|
|
|
|
|
.. note:: This option was broken until version 1.1.6.
|
2020-07-10 00:50:57 +03:00
|
|
|
|
:param joint: Joint type between a sequence of lines. It can be ``"curve"``, for rounded edges, or :data:`None`.
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
2018-09-16 15:30:11 +03:00
|
|
|
|
.. versionadded:: 5.3.0
|
|
|
|
|
|
2020-06-14 15:39:48 +03:00
|
|
|
|
.. py:method:: ImageDraw.pieslice(xy, start, end, fill=None, outline=None, width=1)
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
|
|
|
|
Same as arc, but also draws straight lines between the end points and the
|
|
|
|
|
center of the bounding box.
|
|
|
|
|
|
2019-07-07 03:12:09 +03:00
|
|
|
|
:param xy: Two points to define the bounding box. Sequence of ``[(x0, y0),
|
|
|
|
|
(x1, y1)]`` or ``[x0, y0, x1, y1]``, where ``x1 >= x0`` and ``y1 >=
|
|
|
|
|
y0``.
|
|
|
|
|
:param start: Starting angle, in degrees. Angles are measured from 3
|
|
|
|
|
o'clock, increasing clockwise.
|
2015-03-24 07:16:53 +03:00
|
|
|
|
:param end: Ending angle, in degrees.
|
2013-10-12 11:52:01 +04:00
|
|
|
|
:param fill: Color to use for the fill.
|
2015-03-24 07:16:53 +03:00
|
|
|
|
:param outline: Color to use for the outline.
|
2018-09-01 14:40:36 +03:00
|
|
|
|
:param width: The line width, in pixels.
|
2018-04-13 08:37:54 +03:00
|
|
|
|
|
2018-09-16 23:41:24 +03:00
|
|
|
|
.. versionadded:: 5.3.0
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
2020-06-14 15:39:48 +03:00
|
|
|
|
.. py:method:: ImageDraw.point(xy, fill=None)
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
|
|
|
|
Draws points (individual pixels) at the given coordinates.
|
|
|
|
|
|
|
|
|
|
:param xy: Sequence of either 2-tuples like ``[(x, y), (x, y), ...]`` or
|
|
|
|
|
numeric values like ``[x, y, x, y, ...]``.
|
|
|
|
|
:param fill: Color to use for the point.
|
|
|
|
|
|
2021-11-22 01:49:35 +03:00
|
|
|
|
.. py:method:: ImageDraw.polygon(xy, fill=None, outline=None, width=1)
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
|
|
|
|
Draws a polygon.
|
|
|
|
|
|
|
|
|
|
The polygon outline consists of straight lines between the given
|
|
|
|
|
coordinates, plus a straight line between the last and the first
|
2023-05-08 14:16:34 +03:00
|
|
|
|
coordinate. The coordinate pixels are included in the drawn polygon.
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
|
|
|
|
:param xy: Sequence of either 2-tuples like ``[(x, y), (x, y), ...]`` or
|
|
|
|
|
numeric values like ``[x, y, x, y, ...]``.
|
|
|
|
|
:param fill: Color to use for the fill.
|
2021-11-22 01:48:31 +03:00
|
|
|
|
:param outline: Color to use for the outline.
|
2021-11-22 01:49:35 +03:00
|
|
|
|
:param width: The line width, in pixels.
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
2020-08-09 23:43:37 +03:00
|
|
|
|
|
2023-05-03 15:54:18 +03:00
|
|
|
|
.. py:method:: ImageDraw.regular_polygon(bounding_circle, n_sides, rotation=0, fill=None, outline=None, width=1)
|
2020-08-09 23:43:37 +03:00
|
|
|
|
|
2020-08-21 12:12:00 +03:00
|
|
|
|
Draws a regular polygon inscribed in ``bounding_circle``,
|
2020-08-20 22:46:11 +03:00
|
|
|
|
with ``n_sides``, and rotation of ``rotation`` degrees.
|
2020-08-09 23:43:37 +03:00
|
|
|
|
|
2020-08-21 12:12:00 +03:00
|
|
|
|
:param bounding_circle: The bounding circle is a tuple defined
|
|
|
|
|
by a point and radius.
|
|
|
|
|
(e.g. ``bounding_circle=(x, y, r)`` or ``((x, y), r)``).
|
|
|
|
|
The polygon is inscribed in this circle.
|
2020-08-16 23:07:16 +03:00
|
|
|
|
:param n_sides: Number of sides
|
2020-08-21 12:12:00 +03:00
|
|
|
|
(e.g. ``n_sides=3`` for a triangle, ``6`` for a hexagon).
|
2020-08-09 23:43:37 +03:00
|
|
|
|
:param rotation: Apply an arbitrary rotation to the polygon
|
2020-08-21 12:12:00 +03:00
|
|
|
|
(e.g. ``rotation=90``, applies a 90 degree rotation).
|
2020-08-09 23:43:37 +03:00
|
|
|
|
:param fill: Color to use for the fill.
|
2020-08-20 22:46:11 +03:00
|
|
|
|
:param outline: Color to use for the outline.
|
2023-05-03 15:54:18 +03:00
|
|
|
|
:param width: The line width, in pixels.
|
2020-08-09 23:43:37 +03:00
|
|
|
|
|
|
|
|
|
|
2020-06-14 15:39:48 +03:00
|
|
|
|
.. py:method:: ImageDraw.rectangle(xy, fill=None, outline=None, width=1)
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
|
|
|
|
Draws a rectangle.
|
|
|
|
|
|
2017-11-15 13:25:03 +03:00
|
|
|
|
:param xy: Two points to define the bounding box. Sequence of either
|
2023-02-28 12:04:26 +03:00
|
|
|
|
``[(x0, y0), (x1, y1)]`` or ``[x0, y0, x1, y1]``, where ``x1 >= x0`` and
|
|
|
|
|
``y1 >= y0``. The bounding box is inclusive of both endpoints.
|
2013-10-12 11:52:01 +04:00
|
|
|
|
:param fill: Color to use for the fill.
|
2023-03-17 21:08:19 +03:00
|
|
|
|
:param outline: Color to use for the outline.
|
2018-04-12 18:15:27 +03:00
|
|
|
|
:param width: The line width, in pixels.
|
|
|
|
|
|
2018-09-16 23:41:24 +03:00
|
|
|
|
.. versionadded:: 5.3.0
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
2023-06-14 04:21:43 +03:00
|
|
|
|
.. py:method:: ImageDraw.rounded_rectangle(xy, radius=0, fill=None, outline=None, width=1, corners=None)
|
2021-03-08 11:53:59 +03:00
|
|
|
|
|
|
|
|
|
Draws a rounded rectangle.
|
|
|
|
|
|
|
|
|
|
:param xy: Two points to define the bounding box. Sequence of either
|
2023-02-28 12:04:26 +03:00
|
|
|
|
``[(x0, y0), (x1, y1)]`` or ``[x0, y0, x1, y1]``, where ``x1 >= x0`` and
|
|
|
|
|
``y1 >= y0``. The bounding box is inclusive of both endpoints.
|
2021-03-08 11:53:59 +03:00
|
|
|
|
:param radius: Radius of the corners.
|
|
|
|
|
:param fill: Color to use for the fill.
|
2023-03-17 21:08:19 +03:00
|
|
|
|
:param outline: Color to use for the outline.
|
2021-03-08 11:53:59 +03:00
|
|
|
|
:param width: The line width, in pixels.
|
2023-02-16 11:19:17 +03:00
|
|
|
|
:param corners: A tuple of whether to round each corner,
|
2023-03-04 13:00:18 +03:00
|
|
|
|
``(top_left, top_right, bottom_right, bottom_left)``.
|
2023-06-14 04:21:43 +03:00
|
|
|
|
Keyword-only argument.
|
2021-03-08 11:53:59 +03:00
|
|
|
|
|
|
|
|
|
.. versionadded:: 8.2.0
|
|
|
|
|
|
2020-06-14 15:39:48 +03:00
|
|
|
|
.. py:method:: ImageDraw.shape(shape, fill=None, outline=None)
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
|
|
|
|
.. warning:: This method is experimental.
|
|
|
|
|
|
|
|
|
|
Draw a shape.
|
|
|
|
|
|
2023-10-14 03:01:57 +03:00
|
|
|
|
.. py:method:: 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, font_size=None)
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
|
|
|
|
Draws the string at the given position.
|
|
|
|
|
|
2020-04-14 14:28:09 +03:00
|
|
|
|
:param xy: The anchor coordinates of the text.
|
2020-10-25 22:58:20 +03:00
|
|
|
|
:param text: String to be drawn. If it contains any newline characters,
|
2020-06-02 21:48:53 +03:00
|
|
|
|
the text is passed on to
|
2020-06-02 22:14:36 +03:00
|
|
|
|
:py:meth:`~PIL.ImageDraw.ImageDraw.multiline_text`.
|
2013-10-12 11:52:01 +04:00
|
|
|
|
:param fill: Color to use for the text.
|
2015-07-15 14:00:47 +03:00
|
|
|
|
:param font: An :py:class:`~PIL.ImageFont.ImageFont` instance.
|
2020-04-14 14:28:09 +03:00
|
|
|
|
:param anchor: The text anchor alignment. Determines the relative location of
|
2023-11-30 21:04:41 +03:00
|
|
|
|
the anchor to the text. The default alignment is top left,
|
|
|
|
|
specifically ``la`` for horizontal text and ``lt`` for
|
|
|
|
|
vertical text. See :ref:`text-anchors` for details.
|
|
|
|
|
This parameter is ignored for non-TrueType fonts.
|
2020-04-14 14:28:09 +03:00
|
|
|
|
|
|
|
|
|
.. note:: This parameter was present in earlier versions
|
2020-10-04 22:28:24 +03:00
|
|
|
|
of Pillow, but implemented only in version 8.0.0.
|
2020-04-14 14:28:09 +03:00
|
|
|
|
|
2020-06-02 21:48:53 +03:00
|
|
|
|
:param spacing: If the text is passed on to
|
|
|
|
|
:py:meth:`~PIL.ImageDraw.ImageDraw.multiline_text`,
|
2016-02-01 01:22:18 +03:00
|
|
|
|
the number of pixels between lines.
|
2020-06-02 21:48:53 +03:00
|
|
|
|
:param align: If the text is passed on to
|
|
|
|
|
:py:meth:`~PIL.ImageDraw.ImageDraw.multiline_text`,
|
2020-04-14 14:28:09 +03:00
|
|
|
|
``"left"``, ``"center"`` or ``"right"``. Determines the relative alignment of lines.
|
|
|
|
|
Use the ``anchor`` parameter to specify the alignment to ``xy``.
|
2020-06-01 10:16:30 +03:00
|
|
|
|
:param direction: Direction of the text. It can be ``"rtl"`` (right to
|
|
|
|
|
left), ``"ltr"`` (left to right) or ``"ttb"`` (top to bottom).
|
2018-09-18 13:41:55 +03:00
|
|
|
|
Requires libraqm.
|
2015-07-15 14:00:47 +03:00
|
|
|
|
|
2017-06-29 17:02:02 +03:00
|
|
|
|
.. versionadded:: 4.2.0
|
2013-10-12 11:52:01 +04:00
|
|
|
|
|
2017-06-29 17:02:02 +03:00
|
|
|
|
:param features: A list of OpenType font features to be used during text
|
|
|
|
|
layout. This is usually used to turn on optional
|
|
|
|
|
font features that are not enabled by default,
|
2020-06-01 10:16:30 +03:00
|
|
|
|
for example ``"dlig"`` or ``"ss01"``, but can be also
|
|
|
|
|
used to turn off default font features, for
|
|
|
|
|
example ``"-liga"`` to disable ligatures or ``"-kern"``
|
2017-06-29 17:02:02 +03:00
|
|
|
|
to disable kerning. To get all supported
|
2020-06-02 21:28:34 +03:00
|
|
|
|
features, see `OpenType docs`_.
|
2017-06-29 17:02:02 +03:00
|
|
|
|
Requires libraqm.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 4.2.0
|
2015-07-15 14:00:47 +03:00
|
|
|
|
|
2019-04-23 23:19:17 +03:00
|
|
|
|
:param language: Language of the text. Different languages may use
|
2019-03-07 01:07:30 +03:00
|
|
|
|
different glyph shapes or ligatures. This parameter tells
|
|
|
|
|
the font which language the text is in, and to apply the
|
|
|
|
|
correct substitutions as appropriate, if available.
|
2020-06-01 10:16:30 +03:00
|
|
|
|
It should be a `BCP 47 language code`_.
|
2019-03-07 01:07:30 +03:00
|
|
|
|
Requires libraqm.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 6.0.0
|
|
|
|
|
|
2019-07-28 23:40:03 +03:00
|
|
|
|
:param stroke_width: The width of the text stroke.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 6.2.0
|
|
|
|
|
|
|
|
|
|
:param stroke_fill: Color to use for the text stroke. If not given, will default to
|
2020-06-02 22:14:36 +03:00
|
|
|
|
the ``fill`` parameter.
|
2019-07-28 23:40:03 +03:00
|
|
|
|
|
2020-06-02 22:14:36 +03:00
|
|
|
|
.. versionadded:: 6.2.0
|
2019-07-28 23:40:03 +03:00
|
|
|
|
|
2020-12-30 05:27:28 +03:00
|
|
|
|
:param embedded_color: Whether to use font embedded color glyphs (COLR, CBDT, SBIX).
|
2020-03-28 07:58:35 +03:00
|
|
|
|
|
|
|
|
|
.. versionadded:: 8.0.0
|
|
|
|
|
|
2023-10-14 03:01:57 +03:00
|
|
|
|
:param font_size: If ``font`` is not provided, then the size to use for the default
|
|
|
|
|
font.
|
|
|
|
|
Keyword-only argument.
|
2020-03-28 07:58:35 +03:00
|
|
|
|
|
2023-10-14 03:01:57 +03:00
|
|
|
|
.. versionadded:: 10.1.0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.. py:method:: 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, font_size=None)
|
2015-06-18 06:22:04 +03:00
|
|
|
|
|
|
|
|
|
Draws the string at the given position.
|
|
|
|
|
|
2020-04-14 14:28:09 +03:00
|
|
|
|
:param xy: The anchor coordinates of the text.
|
2020-10-25 22:58:20 +03:00
|
|
|
|
:param text: String to be drawn.
|
2015-07-15 14:00:47 +03:00
|
|
|
|
:param fill: Color to use for the text.
|
2015-06-18 06:22:04 +03:00
|
|
|
|
:param font: An :py:class:`~PIL.ImageFont.ImageFont` instance.
|
2020-04-14 14:28:09 +03:00
|
|
|
|
|
|
|
|
|
:param anchor: The text anchor alignment. Determines the relative location of
|
2023-11-30 21:04:41 +03:00
|
|
|
|
the anchor to the text. The default alignment is top left,
|
|
|
|
|
specifically ``la`` for horizontal text and ``lt`` for
|
|
|
|
|
vertical text. See :ref:`text-anchors` for details.
|
|
|
|
|
This parameter is ignored for non-TrueType fonts.
|
2020-04-14 14:28:09 +03:00
|
|
|
|
|
|
|
|
|
.. note:: This parameter was present in earlier versions
|
2020-10-04 22:28:24 +03:00
|
|
|
|
of Pillow, but implemented only in version 8.0.0.
|
2020-04-14 14:28:09 +03:00
|
|
|
|
|
2015-06-18 06:22:04 +03:00
|
|
|
|
:param spacing: The number of pixels between lines.
|
2020-04-14 14:28:09 +03:00
|
|
|
|
:param align: ``"left"``, ``"center"`` or ``"right"``. Determines the relative alignment of lines.
|
|
|
|
|
Use the ``anchor`` parameter to specify the alignment to ``xy``.
|
2020-06-01 10:16:30 +03:00
|
|
|
|
:param direction: Direction of the text. It can be ``"rtl"`` (right to
|
|
|
|
|
left), ``"ltr"`` (left to right) or ``"ttb"`` (top to bottom).
|
2018-09-18 13:41:55 +03:00
|
|
|
|
Requires libraqm.
|
2015-06-18 06:22:04 +03:00
|
|
|
|
|
2017-06-29 17:02:02 +03:00
|
|
|
|
.. versionadded:: 4.2.0
|
|
|
|
|
|
|
|
|
|
:param features: A list of OpenType font features to be used during text
|
|
|
|
|
layout. This is usually used to turn on optional
|
|
|
|
|
font features that are not enabled by default,
|
2020-06-01 10:16:30 +03:00
|
|
|
|
for example ``"dlig"`` or ``"ss01"``, but can be also
|
|
|
|
|
used to turn off default font features, for
|
|
|
|
|
example ``"-liga"`` to disable ligatures or ``"-kern"``
|
2017-06-29 17:02:02 +03:00
|
|
|
|
to disable kerning. To get all supported
|
2020-06-02 21:28:34 +03:00
|
|
|
|
features, see `OpenType docs`_.
|
2017-06-29 17:02:02 +03:00
|
|
|
|
Requires libraqm.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 4.2.0
|
2015-06-18 06:22:04 +03:00
|
|
|
|
|
2019-04-23 23:19:17 +03:00
|
|
|
|
:param language: Language of the text. Different languages may use
|
2019-03-12 06:21:52 +03:00
|
|
|
|
different glyph shapes or ligatures. This parameter tells
|
|
|
|
|
the font which language the text is in, and to apply the
|
|
|
|
|
correct substitutions as appropriate, if available.
|
2020-06-01 10:16:30 +03:00
|
|
|
|
It should be a `BCP 47 language code`_.
|
2019-03-12 06:21:52 +03:00
|
|
|
|
Requires libraqm.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 6.0.0
|
|
|
|
|
|
2020-03-28 07:58:35 +03:00
|
|
|
|
:param stroke_width: The width of the text stroke.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 6.2.0
|
|
|
|
|
|
|
|
|
|
:param stroke_fill: Color to use for the text stroke. If not given, will default to
|
|
|
|
|
the ``fill`` parameter.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 6.2.0
|
|
|
|
|
|
2020-12-30 05:27:28 +03:00
|
|
|
|
:param embedded_color: Whether to use font embedded color glyphs (COLR, CBDT, SBIX).
|
2020-03-28 07:58:35 +03:00
|
|
|
|
|
2020-10-11 23:25:16 +03:00
|
|
|
|
.. versionadded:: 8.0.0
|
2020-03-28 07:58:35 +03:00
|
|
|
|
|
2023-10-14 03:01:57 +03:00
|
|
|
|
:param font_size: If ``font`` is not provided, then the size to use for the default
|
|
|
|
|
font.
|
|
|
|
|
Keyword-only argument.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 10.1.0
|
|
|
|
|
|
|
|
|
|
.. py:method:: ImageDraw.textlength(text, font=None, direction=None, features=None, language=None, embedded_color=False, font_size=None)
|
2020-10-08 22:30:39 +03:00
|
|
|
|
|
2020-10-11 22:55:32 +03:00
|
|
|
|
Returns length (in pixels with 1/64 precision) of given text when rendered
|
2020-10-08 22:30:39 +03:00
|
|
|
|
in font with provided direction, features, and language.
|
|
|
|
|
|
|
|
|
|
This is the amount by which following text should be offset.
|
|
|
|
|
Text bounding box may extend past the length in some fonts,
|
|
|
|
|
e.g. when using italics or accents.
|
|
|
|
|
|
|
|
|
|
The result is returned as a float; it is a whole number if using basic layout.
|
|
|
|
|
|
|
|
|
|
Note that the sum of two lengths may not equal the length of a concatenated
|
|
|
|
|
string due to kerning. If you need to adjust for kerning, include the following
|
|
|
|
|
character and subtract its length.
|
|
|
|
|
|
2023-02-24 00:17:10 +03:00
|
|
|
|
For example, instead of ::
|
2020-10-08 22:30:39 +03:00
|
|
|
|
|
|
|
|
|
hello = draw.textlength("Hello", font)
|
|
|
|
|
world = draw.textlength("World", font)
|
|
|
|
|
hello_world = hello + world # not adjusted for kerning
|
|
|
|
|
assert hello_world == draw.textlength("HelloWorld", font) # may fail
|
|
|
|
|
|
2023-02-24 00:17:10 +03:00
|
|
|
|
use ::
|
2020-10-08 22:30:39 +03:00
|
|
|
|
|
2021-12-03 23:50:08 +03:00
|
|
|
|
hello = draw.textlength("HelloW", font) - draw.textlength(
|
|
|
|
|
"W", font
|
|
|
|
|
) # adjusted for kerning
|
2020-10-08 22:30:39 +03:00
|
|
|
|
world = draw.textlength("World", font)
|
|
|
|
|
hello_world = hello + world # adjusted for kerning
|
|
|
|
|
assert hello_world == draw.textlength("HelloWorld", font) # True
|
|
|
|
|
|
2023-02-24 00:17:10 +03:00
|
|
|
|
or disable kerning with (requires libraqm) ::
|
2020-10-08 22:30:39 +03:00
|
|
|
|
|
|
|
|
|
hello = draw.textlength("Hello", font, features=["-kern"])
|
|
|
|
|
world = draw.textlength("World", font, features=["-kern"])
|
|
|
|
|
hello_world = hello + world # kerning is disabled, no need to adjust
|
|
|
|
|
assert hello_world == draw.textlength("HelloWorld", font, features=["-kern"]) # True
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 8.0.0
|
|
|
|
|
|
|
|
|
|
:param text: Text to be measured. May not contain any newline characters.
|
|
|
|
|
:param font: An :py:class:`~PIL.ImageFont.ImageFont` instance.
|
|
|
|
|
:param direction: Direction of the text. It can be ``"rtl"`` (right to
|
|
|
|
|
left), ``"ltr"`` (left to right) or ``"ttb"`` (top to bottom).
|
|
|
|
|
Requires libraqm.
|
|
|
|
|
:param features: A list of OpenType font features to be used during text
|
|
|
|
|
layout. This is usually used to turn on optional
|
|
|
|
|
font features that are not enabled by default,
|
|
|
|
|
for example ``"dlig"`` or ``"ss01"``, but can be also
|
|
|
|
|
used to turn off default font features, for
|
|
|
|
|
example ``"-liga"`` to disable ligatures or ``"-kern"``
|
|
|
|
|
to disable kerning. To get all supported
|
|
|
|
|
features, see `OpenType docs`_.
|
|
|
|
|
Requires libraqm.
|
|
|
|
|
:param language: Language of the text. Different languages may use
|
|
|
|
|
different glyph shapes or ligatures. This parameter tells
|
|
|
|
|
the font which language the text is in, and to apply the
|
|
|
|
|
correct substitutions as appropriate, if available.
|
|
|
|
|
It should be a `BCP 47 language code`_.
|
|
|
|
|
Requires libraqm.
|
2020-12-30 05:27:28 +03:00
|
|
|
|
:param embedded_color: Whether to use font embedded color glyphs (COLR, CBDT, SBIX).
|
2023-10-14 03:01:57 +03:00
|
|
|
|
:param font_size: If ``font`` is not provided, then the size to use for the default
|
|
|
|
|
font.
|
|
|
|
|
Keyword-only argument.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 10.1.0
|
|
|
|
|
|
2023-07-25 12:31:58 +03:00
|
|
|
|
:return: Either width for horizontal text, or height for vertical text.
|
2020-10-08 22:30:39 +03:00
|
|
|
|
|
2023-10-14 03:01:57 +03:00
|
|
|
|
.. py:method:: ImageDraw.textbbox(xy, text, font=None, anchor=None, spacing=4, align="left", direction=None, features=None, language=None, stroke_width=0, embedded_color=False, font_size=None)
|
2020-10-08 22:30:39 +03:00
|
|
|
|
|
|
|
|
|
Returns bounding box (in pixels) of given text relative to given anchor
|
2020-10-11 22:55:32 +03:00
|
|
|
|
when rendered in font with provided direction, features, and language.
|
2020-10-08 22:30:39 +03:00
|
|
|
|
Only supported for TrueType fonts.
|
|
|
|
|
|
|
|
|
|
Use :py:meth:`textlength` to get the offset of following text with
|
|
|
|
|
1/64 pixel precision. The bounding box includes extra margins for
|
|
|
|
|
some fonts, e.g. italics or accents.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 8.0.0
|
|
|
|
|
|
|
|
|
|
:param xy: The anchor coordinates of the text.
|
|
|
|
|
:param text: Text to be measured. If it contains any newline characters,
|
|
|
|
|
the text is passed on to
|
|
|
|
|
:py:meth:`~PIL.ImageDraw.ImageDraw.multiline_textbbox`.
|
|
|
|
|
:param font: A :py:class:`~PIL.ImageFont.FreeTypeFont` instance.
|
|
|
|
|
:param anchor: The text anchor alignment. Determines the relative location of
|
2023-11-30 21:04:41 +03:00
|
|
|
|
the anchor to the text. The default alignment is top left,
|
|
|
|
|
specifically ``la`` for horizontal text and ``lt`` for
|
|
|
|
|
vertical text. See :ref:`text-anchors` for details.
|
|
|
|
|
This parameter is ignored for non-TrueType fonts.
|
2020-10-08 22:30:39 +03:00
|
|
|
|
:param spacing: If the text is passed on to
|
|
|
|
|
:py:meth:`~PIL.ImageDraw.ImageDraw.multiline_textbbox`,
|
|
|
|
|
the number of pixels between lines.
|
|
|
|
|
:param align: If the text is passed on to
|
|
|
|
|
:py:meth:`~PIL.ImageDraw.ImageDraw.multiline_textbbox`,
|
|
|
|
|
``"left"``, ``"center"`` or ``"right"``. Determines the relative alignment of lines.
|
|
|
|
|
Use the ``anchor`` parameter to specify the alignment to ``xy``.
|
|
|
|
|
:param direction: Direction of the text. It can be ``"rtl"`` (right to
|
|
|
|
|
left), ``"ltr"`` (left to right) or ``"ttb"`` (top to bottom).
|
|
|
|
|
Requires libraqm.
|
|
|
|
|
:param features: A list of OpenType font features to be used during text
|
|
|
|
|
layout. This is usually used to turn on optional
|
|
|
|
|
font features that are not enabled by default,
|
|
|
|
|
for example ``"dlig"`` or ``"ss01"``, but can be also
|
|
|
|
|
used to turn off default font features, for
|
|
|
|
|
example ``"-liga"`` to disable ligatures or ``"-kern"``
|
|
|
|
|
to disable kerning. To get all supported
|
|
|
|
|
features, see `OpenType docs`_.
|
|
|
|
|
Requires libraqm.
|
|
|
|
|
:param language: Language of the text. Different languages may use
|
|
|
|
|
different glyph shapes or ligatures. This parameter tells
|
|
|
|
|
the font which language the text is in, and to apply the
|
|
|
|
|
correct substitutions as appropriate, if available.
|
|
|
|
|
It should be a `BCP 47 language code`_.
|
|
|
|
|
Requires libraqm.
|
|
|
|
|
:param stroke_width: The width of the text stroke.
|
2020-12-30 05:27:28 +03:00
|
|
|
|
:param embedded_color: Whether to use font embedded color glyphs (COLR, CBDT, SBIX).
|
2023-10-14 03:01:57 +03:00
|
|
|
|
:param font_size: If ``font`` is not provided, then the size to use for the default
|
|
|
|
|
font.
|
|
|
|
|
Keyword-only argument.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 10.1.0
|
|
|
|
|
|
2022-09-03 14:09:44 +03:00
|
|
|
|
:return: ``(left, top, right, bottom)`` bounding box
|
2020-10-08 22:30:39 +03:00
|
|
|
|
|
2023-10-14 03:01:57 +03:00
|
|
|
|
.. py:method:: 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, font_size=None)
|
2020-10-08 22:30:39 +03:00
|
|
|
|
|
|
|
|
|
Returns bounding box (in pixels) of given text relative to given anchor
|
2020-10-11 22:55:32 +03:00
|
|
|
|
when rendered in font with provided direction, features, and language.
|
2020-10-08 22:30:39 +03:00
|
|
|
|
Only supported for TrueType fonts.
|
|
|
|
|
|
|
|
|
|
Use :py:meth:`textlength` to get the offset of following text with
|
|
|
|
|
1/64 pixel precision. The bounding box includes extra margins for
|
|
|
|
|
some fonts, e.g. italics or accents.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 8.0.0
|
|
|
|
|
|
|
|
|
|
:param xy: The anchor coordinates of the text.
|
|
|
|
|
:param text: Text to be measured.
|
|
|
|
|
:param font: A :py:class:`~PIL.ImageFont.FreeTypeFont` instance.
|
|
|
|
|
:param anchor: The text anchor alignment. Determines the relative location of
|
2023-11-30 21:04:41 +03:00
|
|
|
|
the anchor to the text. The default alignment is top left,
|
|
|
|
|
specifically ``la`` for horizontal text and ``lt`` for
|
|
|
|
|
vertical text. See :ref:`text-anchors` for details.
|
|
|
|
|
This parameter is ignored for non-TrueType fonts.
|
2020-10-08 22:30:39 +03:00
|
|
|
|
:param spacing: The number of pixels between lines.
|
|
|
|
|
:param align: ``"left"``, ``"center"`` or ``"right"``. Determines the relative alignment of lines.
|
|
|
|
|
Use the ``anchor`` parameter to specify the alignment to ``xy``.
|
|
|
|
|
:param direction: Direction of the text. It can be ``"rtl"`` (right to
|
|
|
|
|
left), ``"ltr"`` (left to right) or ``"ttb"`` (top to bottom).
|
|
|
|
|
Requires libraqm.
|
|
|
|
|
:param features: A list of OpenType font features to be used during text
|
|
|
|
|
layout. This is usually used to turn on optional
|
|
|
|
|
font features that are not enabled by default,
|
|
|
|
|
for example ``"dlig"`` or ``"ss01"``, but can be also
|
|
|
|
|
used to turn off default font features, for
|
|
|
|
|
example ``"-liga"`` to disable ligatures or ``"-kern"``
|
|
|
|
|
to disable kerning. To get all supported
|
|
|
|
|
features, see `OpenType docs`_.
|
|
|
|
|
Requires libraqm.
|
|
|
|
|
:param language: Language of the text. Different languages may use
|
|
|
|
|
different glyph shapes or ligatures. This parameter tells
|
|
|
|
|
the font which language the text is in, and to apply the
|
|
|
|
|
correct substitutions as appropriate, if available.
|
|
|
|
|
It should be a `BCP 47 language code`_.
|
|
|
|
|
Requires libraqm.
|
|
|
|
|
:param stroke_width: The width of the text stroke.
|
2020-12-30 05:27:28 +03:00
|
|
|
|
:param embedded_color: Whether to use font embedded color glyphs (COLR, CBDT, SBIX).
|
2023-10-14 03:01:57 +03:00
|
|
|
|
:param font_size: If ``font`` is not provided, then the size to use for the default
|
|
|
|
|
font.
|
|
|
|
|
Keyword-only argument.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 10.1.0
|
|
|
|
|
|
2022-09-03 14:09:44 +03:00
|
|
|
|
:return: ``(left, top, right, bottom)`` bounding box
|
2020-10-08 22:30:39 +03:00
|
|
|
|
|
2020-06-14 15:39:48 +03:00
|
|
|
|
.. py:method:: getdraw(im=None, hints=None)
|
2017-07-16 08:22:46 +03:00
|
|
|
|
|
|
|
|
|
.. warning:: This method is experimental.
|
|
|
|
|
|
|
|
|
|
A more advanced 2D drawing interface for PIL images,
|
|
|
|
|
based on the WCK interface.
|
|
|
|
|
|
|
|
|
|
:param im: The image to draw in.
|
|
|
|
|
:param hints: An optional list of hints.
|
|
|
|
|
:returns: A (drawing context, drawing resource factory) tuple.
|
|
|
|
|
|
2020-06-14 15:39:48 +03:00
|
|
|
|
.. py:method:: floodfill(image, xy, value, border=None, thresh=0)
|
2017-07-16 08:22:46 +03:00
|
|
|
|
|
|
|
|
|
.. warning:: This method is experimental.
|
|
|
|
|
|
|
|
|
|
Fills a bounded region with a given color.
|
|
|
|
|
|
|
|
|
|
:param image: Target image.
|
|
|
|
|
:param xy: Seed position (a 2-item coordinate tuple).
|
|
|
|
|
:param value: Fill color.
|
|
|
|
|
:param border: Optional border value. If given, the region consists of
|
|
|
|
|
pixels with a color different from the border color. If not given,
|
|
|
|
|
the region consists of pixels having the same color as the seed
|
|
|
|
|
pixel.
|
|
|
|
|
:param thresh: Optional threshold value which specifies a maximum
|
|
|
|
|
tolerable difference of a pixel value from the 'background' in
|
|
|
|
|
order for it to be replaced. Useful for filling regions of non-
|
|
|
|
|
homogeneous, but similar, colors.
|
2020-06-01 10:16:30 +03:00
|
|
|
|
|
|
|
|
|
.. _BCP 47 language code: https://www.w3.org/International/articles/language-tags/
|
2022-09-23 15:13:50 +03:00
|
|
|
|
.. _OpenType docs: https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist
|