Pillow ImageDraw方法

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

獲取當前默認字體。

返回

圖像字體。

?ImageDraw.arc(xystartendfill=Nonewidth=0)?

在給定的邊界框內,在起始角和結束角之間繪制圓?。▓A輪廓的一部分)。

參數
  • 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(fā)”或“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 像素精度測量后續(xù)文本的偏移量。使用?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)

返回給定字符串的大?。ㄏ袼兀S糜?span style="background-color: rgb(255, 255, 255);">?textlength()?以 1/64 像素精度測量后續(xù)文本的偏移量。使用?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 – 要測量的文本??赡懿话魏螕Q行符。

  • 字體- 一個?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 像素精度獲取后續(xù)文本的偏移量。邊界框包括一些字體的額外邊距,例如斜體或加粗。

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 像素精度獲取后續(xù)文本的偏移量。邊界框包括一些字體的額外邊距,例如斜體或加粗。

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)?

這種方法是實驗性的。

用給定顏色填充有界區(qū)域。

參數
  • image -- 目標圖像。

  • xy -- 種子位置(2項坐標元組)。

  • value -- 填充顏色。

  • border -- 可選邊框值。如果給定,該區(qū)域由顏色與邊框顏色不同的像素組成。如果沒有給出,該區(qū)域由與種子像素顏色相同的像素組成。

  • thresh -- 可選閾值,指定像素值與“背景”的最大允許差異,以便替換。用于填充顏色不均勻但相似的區(qū)域。



以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號