天天看點

【python】PIL庫ImageDraw子產品的筆記

PIL的ImageDraw庫

PIL的ImageDraw庫

from PIL import Image, ImageDraw

im = Image.open()

draw = ImageDraw.Draw(im)
draw.line((0, 0) + im.size, fill=128)
draw.line((0, im.size[1], im.size[0], 0), fill=128)
del draw

im.save(sys.stdout, )

//這個例子是在圖檔上畫一條對角線
//現在我還沒有開始學,是以暫時看不懂
//拿來運作了一遍,還不錯

           

1.初始化需要繪圖的圖像

from PIL import Image,ImageDraw

im = Image.open("1.png")
draw = ImageDraw.Draw(im)

//此時初始化了一個draw對象
//接下來可使用各種方法在im圖檔對象上操作

           

2.擷取目前字型

PIL.ImageDraw.ImageDraw.getfont()

from PIL import Image, ImageDraw
import sys

im = Image.open("1.png")

draw = ImageDraw.Draw(im)
print(draw.getfont())

//結果傳回:PIL.ImageFont.ImageFont object at 0x04AB37D0
//應該是傳回了目前字型的資訊
//具體有什麼用,還有待考察

           

3.在給定區域内擷取位圖

PIL.ImageDraw.ImageDraw.bitmap(xy, bitmap, fill=None)

from PIL import Image, ImageDraw
import sys

im01 = Image.open("1.png")
im02=Image.open("1.png")


r,g,b=im02.split()

draw=ImageDraw.Draw(im01)
draw.bitmap((0,0),b,(0,255,0))
im01.show()

//擷取到了1.png的位圖
//但是不知道r,g,b=im02.split()的用意
//r,g,b=im02.split()這個方法是将圖檔的三色通道分開

           

4.在所給圖像中繪制一個圓或圓的一部分

PIL.ImageDraw.ImageDraw.chord(xy, start, end, fill=None, outline=None)

from PIL import Image, ImageDraw
import sys

im01 = Image.open("1.png")
draw=ImageDraw.Draw(im01)
draw.chord((0,0,200,200),0,180,(255,0,0),(0,255,0))
im01.show()

//在四元組區域繪制一個圓或者圓的一部分
//

           

5.繪制一個橢圓

PIL.ImageDraw.ImageDraw.ellipse(xy, fill=None, outline=None)

from PIL import Image, ImageDraw
import sys

im01 = Image.open("1.png")
draw=ImageDraw.Draw(im01)
draw.ellipse((0,0,200,200),(0,255,0),(0,0,255))
im01.show()

//在指定區域畫一個橢圓
//參數的用法和.ImageDraw.arc是一樣的

           

6.在圖檔中畫一條線

PIL.ImageDraw.ImageDraw.line(xy, fill=None, width=0)

from PIL import Image, ImageDraw

im=Image.open("2.png")
draw=ImageDraw.Draw(im)
draw.line([(100,50),(300,100)],(0,255,0),10)
im.show()

//第一個參數為一個二進制組,每個元組中包含兩個坐标
//分别為起始坐标和終止坐标
//第二個參數為線的顔色
//第三個參數為線的寬度

           

7.在圖檔上畫點

PIL.ImageDraw.ImageDraw.point(xy, fill=None)

from PIL import Image, ImageDraw

im=Image.open("2.png")
draw=ImageDraw.Draw(im)
draw.point([(20,100),(100,20),(50,50),(200,150)],(0,255,0))
im.show()

//在給定的元組内進行畫點
//每個點占用一個像素
//測試的時候記得仔細找一找,一個像素很小

           

8.繪制一個多邊形

PIL.ImageDraw.ImageDraw.polygon(xy, fill=None, outline=None)

from PIL import Image, ImageDraw

im=Image.open("2.png")
draw=ImageDraw.Draw(im)
draw.polygon([(200,10),(50,50),(45,150),(42,195),(62,45)],(255,0,0))
im.show()


           

9.在指定的位置繪制一個字元

PIL.ImageDraw.ImageDraw.text(xy, text, fill=None, font=None, anchor=None, spacing=0, align=”left”, direction=None, features=None)

from PIL import Image, ImageDraw

im=Image.open("2.png")
draw=ImageDraw.Draw(im)
draw.text((10,10),"hello",(0,255,0))
im.show()

//第一個參數是坐标
//第二個是要列印的文本
//第三個是顔色
//第四個是字型
//align屬性是字型對齊方式
//在最新的版本裡面沒有看到後面幾個屬性