Pillow ImageDraw方法

2021-07-14 14:01 更新
ImageDraw.getfont()

获取当前默认字体。

返回

图像字体。

ImageDraw.arc(xystartendfill=Nonewidth=0)

在给定的边界框内,在起始角和结束角之间绘制圆弧(圆轮廓的一部分)。

参数
  • xy -- 定义边界框的两点。序列 [(x0, y0), (x1, y1)] 或 [x0, y0, x1, y1] 其中 x1 >= x0 和 y1 >= y0 .

  • start -- 起始角度,以度为单位。角度从3点钟开始测量,顺时针增加。

  • end -- 结束角度,以度为单位。

  • fill -- 用于弧的颜色。

  • width -- 线条宽度,以像素为单位。

添加的版本:5.3.0

ImageDraw.bitmap(xybitmapfill=None)

使用非零部分的当前填充颜色在给定位置绘制位图(遮罩)。位图应该是有效的透明蒙版(模式“1”)或蒙版(模式“l”或“rgba”)。

这相当于 image.paste(xy, color, bitmap) .

要将像素数据粘贴到图像中,请使用 paste() 方法。

ImageDraw.chord(xystartendfill=Noneoutline=Nonewidth=1)

等同于 arc() ,但用直线连接端点。

参数
  • xy -- 定义边界框的两点。序列 [(x0, y0), (x1, y1)] 或 [x0, y0, x1, y1] 其中x1 >= x0 和 y1 >= y0 .

  • outline -- 用于轮廓的颜色。

  • fill -- 用于填充的颜色。

  • width -- 线条宽度,以像素为单位

添加的版本:5.3.0

ImageDraw.ellipse(xyfill=Noneoutline=Nonewidth=1)

在给定的边界框内绘制椭圆。

参数
  • xy -- 定义边界框的两点。任何一个的序列 [(x0, y0), (x1, y1)] 或 [x0, y0, x1, y1] 其中 x1 >= x0 和 y1 >= y0 .

  • outline -- 用于轮廓的颜色。

  • fill -- 用于填充的颜色。

  • width -- 线条宽度,以像素为单位。

添加的版本:5.3.0

ImageDraw.line(xyfill=Nonewidth=0joint=None)

xy列表中的坐标之间画一条线。

参数
  • xy -- 两个元组的序列 [(x, y), (x, y), ...] 或类似的数值 [x, y, x, y, ...] .

  • fill -- 用于线条的颜色。

  • width -- 线条宽度,以像素为单位。

添加的版本:1.1.5
注意:此选项在1.1.6版之前已被破坏。
  • joint -- 一系列线之间的连接类型。它可以 "curve" ,对于圆边,或 None 

版本添加::5.3.0
ImageDraw.pieslice(xystartendfill=Noneoutline=Nonewidth=1)

与arc相同,但也在端点和边界框中心之间绘制直线。

参数
  • xy -- 定义边界框的两点。序列 [(x0, y0), (x1, y1)] 或 [x0, y0, x1, y1] 其中x1 >= x0 和 y1 >= y0 .

  • start -- 起始角度,以度为单位。角度从3点钟开始测量,顺时针增加。

  • end -- 结束角度,以度为单位。

  • fill -- 用于填充的颜色。

  • outline -- 用于轮廓的颜色。

  • width -- 线条宽度,以像素为单位。

添加的版本:5.3.0


ImageDraw.point(xyfill=None)

在给定坐标处绘制点(单个像素)。

参数
  • xy -- 两个元组的序列 [(x, y), (x, y), ...] 或类似的数值 [x, y, x, y, ...] .

  • fill -- 用于点的颜色。

ImageDraw.polygon(xyfill=Noneoutline=None)

绘制多边形。

多边形轮廓由给定坐标之间的直线以及最后一个坐标和第一个坐标之间的直线组成。

参数
  • xy -- 两个元组的序列 [(x, y), (x, y), ...] 或类似的数值 [x, y, x, y, ...] .

  • outline -- 用于轮廓的颜色。

  • fill -- 用于填充的颜色。

ImageDraw.regular_polygon(bounding_circlen_sidesrotation=0fill=Noneoutline=None)

绘制一个内接于bounding_circle、带有n_sides和旋转rotation度数的正多边形。

参数
  • bounding_circle -- 边界圆是由点和半径定义的元组。(例如。 bounding_circle=(x, y, r) 或 ((x, y), r) ). 多边形内接在这个圆内。

  • n_sides -- 边数(例如。 n_sides=3 对于三角形, 6 六边形)。

  • rotation -- 对多边形应用任意旋转(例如。 rotation=90 ,应用90度旋转)。

  • fill -- 用于填充的颜色。

  • outline -- 用于轮廓的颜色。

ImageDraw.rectangle(xyfill=Noneoutline=Nonewidth=1)

绘制矩形。

参数
  • xy -- 定义边界框的两点。任何一个的序列 [(x0, y0), (x1, y1)] 或 [x0, y0, x1, y1] . 第二个点正好在绘制的矩形之外。

  • outline -- 用于轮廓的颜色。

  • fill -- 用于填充的颜色。

  • width -- 线条宽度,以像素为单位。

添加的版本:5.3.0
ImageDraw.shape(shapefill=Noneoutline=None)

这种方法是实验性的。

画一个形状。

ImageDraw.text(xytextfill=Nonefont=Noneanchor=Nonespacing=4align='left'direction=Nonefeatures=Nonelanguage=Nonestroke_width=0stroke_fill=None)

在给定位置绘制字符串。

参数
  • xy -- 文本的左上角。

  • text -- 要绘制的文本。如果它包含任何换行符,则文本将传递给 multiline_text() .

  • fill -- 用于文本的颜色。

  • font -- 一个ImageFont 实例。

  • anchor –文本锚对齐方式。确定锚点与文本的相对位置。默认对齐方式是左上角。有关有效值,请参阅文本锚点。对于非 TrueType 字体,将忽略此参数。

    此参数存在于 Pillow 的早期版本中,但仅在 8.0.0 版中实现。
  • spacing -- 如果文本传递给 multiline_text() ,行之间的像素数。

  • align -- 如果文本传递给 multiline_text() , "left" , "center" 或 "right" .

  • direction -- 文本的方向。它可以 "rtl" (从右到左), "ltr" (从左到右)或 "ttb" (从上到下)。需要libraqm库支持。

添加的版本:4.2.0
  • features -- 文本布局期间使用的OpenType字体功能的列表。例如,这通常用于打开默认情况下未启用的可选字体功能 "dlig" 或 "ss01" ,但也可以用于关闭默认字体功能,例如 "-liga" 禁用连字或 "-kern" 禁用字距调整。要获取所有支持的功能,请参阅 OpenType docs . 需要libraqm库支持。

添加的版本:4.2.0
  • language -- 文本的语言。不同的语言可以使用不同的字形或连字。此参数告诉文本使用哪种语言的字体,并根据需要应用正确的替换(如果可用)。应该是一个 BCP 47 语言代码 . 需要libraqm库支持。

添加的版本:6.0.0
  • stroke_width -- 文本笔划的宽度。

添加的版本:6.2.0
  • stroke_fill -- 用于文本笔划的颜色。如果未给出,将默认为 fill 参数。

添加的版本:6.2.0
ImageDraw.multiline_text(xytextfill=Nonefont=Noneanchor=Nonespacing=4align='left'direction=Nonefeatures=Nonelanguage=None)​在给定位置绘制字符串。
参数
  • xy -- 文本的左上角。

  • text -- 要绘制的文本。

  • fill -- 用于文本的颜色。

  • font -- 一个 ImageFont 实例。

  • spacing -- 行与行之间的像素数。

  • align -- "left" , "center" 或 "right" .

  • direction -- 文本的方向。它可以 "rtl" (从右到左), "ltr" (从左到右)或 "ttb" (从上到下)。需要libraqm库支持。

添加的版本:4.2.0
  • features -- 文本布局期间使用的OpenType字体功能的列表。例如,这通常用于打开默认情况下未启用的可选字体功能 "dlig" 或 "ss01" ,但也可以用于关闭默认字体功能,例如 "-liga" 禁用连字或 "-kern" 禁用字距调整。要获取所有支持的功能,请参阅 OpenType docs 。 需要libraqm库支持。

添加的版本:4.2.0

  • language -- 文本的语言。不同的语言可以使用不同的字形或连字。此参数告诉文本使用哪种语言的字体,并根据需要应用正确的替换(如果可用)。应该是一个 BCP 47 语言代码。 需要libraqm库支持。

添加的版本:6.0.0
ImageDraw.textsize(textfont=Nonespacing=4direction=Nonefeatures=Nonelanguage=Nonestroke_width=0)

返回给定字符串的大小(像素)。用于textlength()以 1/64 像素精度测量后续文本的偏移量。使用textbbox()获得基于锚的确切边界框。

由于历史原因,此函数从上升行而不是顶部测量文本高度,请参阅文本锚点。如果您希望从顶部测量文本高度,建议使用​​anchor='lt'​代替​textbbox()​。

参数
  • text -- 要测量的文本。如果它包含任何换行符,则文本将传递给 multiline_textsize() .

  • font -- 一个 ImageFont 实例。

  • spacing -- 如果文本传递给 multiline_textsize() ,行之间的像素数。

  • direction -- 文本的方向。它可以 "rtl" (从右到左), "ltr" (从左到右)或 "ttb" (从上到下)。需要libraqm库支持。

添加的版本:4.2.0
  • features -- 文本布局期间使用的OpenType字体功能的列表。例如,这通常用于打开默认情况下未启用的可选字体功能 "dlig" 或 "ss01" ,但也可以用于关闭默认字体功能,例如 "-liga" 禁用连字或 "-kern" 禁用字距调整。要获取所有支持的功能,请参阅 OpenType docs . 需要libraqm库支持。

添加的版本:4.2.0

  • language -- 文本的语言。不同的语言可以使用不同的字形或连字。此参数告诉文本使用哪种语言的字体,并根据需要应用正确的替换(如果可用)。应该是一个 BCP 47 语言代码。 需要libraqm库支持。

添加的版本:6.0.0
  • stroke_width -- 文本笔划的宽度

添加的版本:6.2.0
ImageDraw.multiline_textsize(textfont=Nonespacing=4direction=Nonefeatures=Nonelanguage=Nonestroke_width=0)

返回给定字符串的大小(像素)。用于textlength()以 1/64 像素精度测量后续文本的偏移量。使用textbbox()获得基于锚的确切边界框。

由于历史原因,此函数将文本高度测量为顶部上升线和底部下降线之间的距离,而不是文本的顶部和底部,请参阅文本锚点。如果您想测量从文本顶部到底部的文本高度,建议使用​multiline_textbbox()​。

参数
  • text -- 要测量的文本。

  • font -- 一个 ImageFont 实例。

  • spacing -- 行与行之间的像素数。

  • direction -- 文本的方向。它可以 "rtl" (从右到左), "ltr" (从左到右)或 "ttb" (从上到下)。需要libraqm库支持。

添加的版本:4.2.0
  • features -- 文本布局期间使用的OpenType字体功能的列表。例如,这通常用于打开默认情况下未启用的可选字体功能 "dlig" 或 "ss01" ,但也可以用于关闭默认字体功能,例如 "-liga" 禁用连字或 "-kern" 禁用字距调整。要获取所有支持的功能,请参阅 OpenType docs . 需要libraqm库支持。

添加的版本:4.2.0
  • language -- 文本的语言。不同的语言可以使用不同的字形或连字。此参数告诉文本使用哪种语言的字体,并根据需要应用正确的替换(如果可用)。应该是一个 BCP 47 语言代码。 需要libraqm库支持。

添加的版本:6.2.0
  • stroke_width -- 文本笔划的宽度。

添加的版本:6.2.0
ImageDraw.textlength(textfont=Nonedirection=Nonefeatures=Nonelanguage=Noneembedded_color=False)

当以提供方向、特征和语言的字体呈现时,返回给定文本的长度(以像素为单位,精度为 1/64)。

这是以下文本应偏移的量。文本边界框可能会超出某些字体的长度,例如使用斜体或加粗时。

结果作为浮点数返回;如果使用基本布局,则为整数。

请注意,由于字距调整,两个长度的总和可能不等于连接字符串的长度。如果您需要调整字距,请包含以下字符并减去其长度。

例如,代替

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

hello = draw.textlength("HelloW", font) - draw.textlength("W", font)  # adjusted for kerning
world = draw.textlength("World", font)
hello_world = hello + world  # adjusted for kerning
assert hello_world == draw.textlength("HelloWorld", font)  # True

或禁用字距调整(需要 libraqm库支持)

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

8.0.0 版中的新功能。

参数
  • text – 要测量的文本。可能不包含任何换行符。

  • 字体- 一个​ImageFont​实例。

  • 方向- 文本的方向。它可以是"rtl"(从右到左)、"ltr"(从左到右)或"ttb"(从上到下)。需要 libraqm库支持。

  • features – 要在文本布局期间使用的 OpenType 字体功能列表。这通常用于打开默认情况下未启用的可选字体功能,例如"dlig""ss01",但也可用于关闭默认字体功能,例如"-liga"禁用连字或"-kern" 禁用字距调整。要获取所有支持的功能,请参阅OpenType 文档。需要 libraqm库支持

  • language- 文本的语言。不同的语言可能使用不同的字形形状或连字。此参数告诉字体文本使用的语言,并根据需要应用正确的替换(如果可用)。它应该是BCP 47 语言代码。需要 libraqm库支持。

  • Embedded_color – 是否使用字体嵌入颜色字形(COLR、CBDT、SBIX)。

ImageDraw.textbbox(xytextfont=Noneanchor=Nonespacing=4align='left'direction=Nonefeatures=Nonelanguage=Nonestroke_width=0embedded_color=False)

当以具有提供的方向、特征和语言的字体呈现时,返回给定文本相对于给定锚点的边界框(以像素为单位)。仅支持 TrueType 字体。

用于textlength()以 1/64 像素精度获取后续文本的偏移量。边界框包括一些字体的额外边距,例如斜体或加粗。

8.0.0 版中的新功能。

参数
  • xy – 文本的锚点坐标。

  • text – 要测量的文本。如果它包含任何换行符,则文本将传递给 multiline_textbbox()

  • font- 一个FreeTypeFont实例。

  • anchor – 文本锚对齐方式。确定锚点与文本的相对位置。默认对齐方式是左上角。有关有效值,请参阅文本锚点。对于非 TrueType 字体,将忽略此参数。

  • spacing– 如果文本传递到multiline_textbbox(),则为 行之间的像素数。

  • align-如果文本被传递到 multiline_textbbox(), "left""center""right"。确定线条的相对对齐方式。使用anchor参数指定对齐到xy

  • direction- 文本的方向。它可以是"rtl"(从右到左)、"ltr"(从左到右)或"ttb"(从上到下)。需要 libraqm库支持。

  • features – 要在文本布局期间使用的 OpenType 字体功能列表。这通常用于打开默认情况下未启用的可选字体功能,例如"dlig""ss01",但也可用于关闭默认字体功能,例如"-liga"禁用连字或"-kern" 禁用字距调整。要获取所有支持的功能,请参阅OpenType 文档。需要 libraqm库支持。

  • language- 文本的语言。不同的语言可能使用不同的字形形状或连字。此参数告诉字体文本使用的语言,并根据需要应用正确的替换(如果可用)。它应该是BCP 47 语言代码。需要 libraqm库支持。

  • stroke_width – 文本笔触的宽度。

  • Embedded_color – 是否使用字体嵌入颜色字形(COLR、CBDT、SBIX)。

ImageDraw.multiline_textbbox(xytextfont=Noneanchor=Nonespacing=4align='left'direction=Nonefeatures=Nonelanguage=Nonestroke_width=0embedded_color=False)

当以具有提供的方向、特征和语言的字体呈现时,返回给定文本相对于给定锚点的边界框(以像素为单位)。仅支持 TrueType 字体。

用于​textlength()​以 1/64 像素精度获取后续文本的偏移量。边界框包括一些字体的额外边距,例如斜体或加粗。

8.0.0 版中的新功能。

参数
  • xy – 文本的锚点坐标。

  • text – 要测量的文本。

  • 字体- 一个FreeTypeFont实例。

  • anchor – 文本锚对齐方式。确定锚点与文本的相对位置。默认对齐方式是左上角。有关有效值,请参阅文本锚点。对于非 TrueType 字体,将忽略此参数。

  • spacing- 行之间的像素数。

  • align– "left""center""right"。确定线条的相对对齐方式。使用anchor参数指定对齐到xy

  • direction- 文本的方向。它可以是"rtl"(从右到左)、"ltr"(从左到右)或"ttb"(从上到下)。需要 libraqm库支持。

  • features – 要在文本布局期间使用的 OpenType 字体功能列表。这通常用于打开默认情况下未启用的可选字体功能,例如"dlig""ss01",但也可用于关闭默认字体功能,例如"-liga"禁用连字或"-kern" 禁用字距调整。要获取所有支持的功能,请参阅OpenType 文档。需要 libraqm库支持。

  • language- 文本的语言。不同的语言可能使用不同的字形形状或连字。此参数告诉字体文本使用的语言,并根据需要应用正确的替换(如果可用)。它应该是BCP 47 语言代码。需要 libraqm库支持。

  • stroke_width – 文本笔触的宽度。

  • Embedded_color – 是否使用字体嵌入颜色字形(COLR、CBDT、SBIX)。

PIL.ImageDraw.getdraw(im=Nonehints=None)

这种方法是实验性的。

基于WCK接口的PIL图像更高级的二维绘图接口。

参数
  • im -- 要绘制的图像。

  • hints -- 提示的可选列表。

返回

(绘图上下文、绘图资源工厂)元组。

PIL.ImageDraw.floodfill(imagexyvalueborder=Nonethresh=0)

这种方法是实验性的。

用给定颜色填充有界区域。

参数
  • image -- 目标图像。

  • xy -- 种子位置(2项坐标元组)。

  • value -- 填充颜色。

  • border -- 可选边框值。如果给定,该区域由颜色与边框颜色不同的像素组成。如果没有给出,该区域由与种子像素颜色相同的像素组成。

  • thresh -- 可选阈值,指定像素值与“背景”的最大允许差异,以便替换。用于填充颜色不均匀但相似的区域。



以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号