目錄
ImageDraw模塊
繪制直線
繪制圓弧
繪制橢圓
繪制弦
繪制扇形
繪制多邊形
繪制矩形
繪制文字
繪制點
ImageFont模塊
ImageDraw模塊實現了繪圖功能。可以通過創建圖片的方式來繪制2D圖像;也可以在原有圖片上進行繪圖,以達到修飾圖片或對圖片進行注釋的目的。在ImageDraw模塊繪圖時需要首先創建一個ImageDraw.Draw對象,並且提供指向文件的參數。然後引用創建的Draw對象方法進行繪圖。最後保存或直接輸出繪制的圖像:drawObject=ImageDraw.Draw(black)
drawObject.line ([x,y1,x2,y2], fill= None,width =0,joint= None)
表示以(x1,y1)為起始點,以(x2,y2)為終止點畫一條直線。[x1,y,2,y2]也可以寫為(x1,y1,x2,y2)、[x1,y1)(x2,y2)]; fill用於設置指定線條顏色; width設置線條的寬度; joint表示一系列線之間的聯合類型。它可以是“曲線”。
drawObject.arc ([x1,y1 ,x2,y2],tart,end,fill=None,width=0)
在左上角坐標為(x1,y1),右下角坐標為(x2,y2)的矩形區域內(圓O內),以start為起始角度,以end為終止角度,截取圓O的一部分圓弧並畫出來。如果[x1,y1,x2,y2]區域不是正方形,則在該區域內的最大橢圓中根據角度截取片段。參數fill和width與line方法相同。
drawObject.elipse([x1,y1, x2,y2],fill=None,outline=None,width=0)
用法同arc類似,用於畫圓(或者橢圓)。outline 表示只規定圓的顏色。
drawObject.chord([x1,y1, x2,y2],start, end, fill=None,outline=None,width=0)
用法同arc類似,用於畫圓中從start到end的弦。fill表示弦與圓弧之間空間用指定顏色填滿,設置為outline表示只規定弦線的顏色。
drawObiect.pieslice ([x1,y1,x2,y2],start,end,fill=None,outline=None,width=0)
用法同elipse類似,用於畫起止角度間的扇形區域。fill 表示將扇形區域用指定顏色填滿,設置為outline表示只用指定顏色描出區域輪廓。
drawbjct.polygon([x1,y1,x2,y2,...],fill= None,outline=None)
根據坐標畫多邊形,Python會根據第一個參量中的(x,y) 坐標對,連接出整個圖形。fill表示將多邊形區域用指定顏色填滿,outline只用於設置指定顏色描出區域輪廓。
drawObject.rectangle([x1,y1,x2,y2], fill=None,outline=None,width=0)
在指定的區域內畫一個矩形,(x1,y1)表示矩形左上角的坐標,(x2,y2)表示矩形右下角的坐標。fill 用於將矩形區域顏色填滿,outline 用於描出區域輪廓。
drawObject.text(position,text,fill=None,font=None,anchor=None,spacing=0,align=“left",direction =None,features=None,language=None)
在圖像內添加文字。其中參數position是一個二元組,用於指定文字左上角的坐標; text表示要寫入的文字內容; fill 表示文本的顏色; font 必須為ImageFont中指定的font類型;spacing表示行之間的像素數;align 表示位置“left",“center" 或“right";direction表示文字的方向。它可以是’rtl’(從右到左),'ltr' (從左到右)或’ttb’ (從上到下)。
drawObject.point(x,y,fill=None)
給定坐標處繪制點(單個像素)。
ImageFont的功能是實現對字體和字型的處理。常用的內置函數:
①load():從指定的文件中加載一種字體,該函數返回對應的字體對象。如果該函數運行失敗,那麼將產生IOError異常。語法格式:ImageFont.load(文件名)
②load_path():和函數load()一樣,但是如果沒有指定當前路徑,就會從文件sys.path開始查找指定的字體文件。語法格式:ImageFont.load_path(文件名)
③truetype():有兩種定義格式:
第1種格式的功能是加載一個TrueType或者OpenType字體文件,並且創建一個字體對象。在Windows系統中,如果指定的文件不存在,加載器就會順便看看Windows的字體目錄下它是否存在。語法格式:ImageFont.truetype(file,size)
第2種格式的功能是加載一個TrueType或者OpenType字體文件,並且創建一個字體對象。通常的編碼方式是“unic”(Unicode)、“symb” (MicrosofSymbol)、“ADOB”(Adobe Standard)、“ ADBE”(Adobe Expert)和“armn”(Apple Roman)。語法格式:ImageFont.truetype (file,size,encoding=value)
④load_default():功能是加載一種默認的字體。語法格式:ImageFont.load_default()
⑤getsize():返回給定文本的寬度和高度,返回值是一個二元組。語法格式:ImageFont.getsize()
from PIL import Image, ImageDraw, ImageFont
img_background = Image.new('RGB', (800, 500), '#B9DEF5')
img = ImageDraw.Draw(img_background)
img.line((0, 0, 200, 200), fill='yellow', width=3)
img.arc((0, 0, 200, 200), 0, 360, 'red', 3)
img.ellipse((200, 100, 300, 300), fill='green', outline='blue', width=3)
img.pieslice((200, 200, 500, 500), 30, 150, outline='pink', fill='yellow', width=2)
img.polygon((700, 500, 450, 400, 600, 650, 700, 700), fill='#96D767', outline='#A6D9AE')
img.text((300, 10), text='一起學python', fill='black', font=ImageFont.truetype('C:/Windows/Fonts/STXINGKA.TTF', 50),
spacing=5,align='center')
img_background.show()