日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python手记(四):pillow(四) ImageDraw模块 图片绘制(图片上自定义绘制)

發布時間:2023/12/15 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python手记(四):pillow(四) ImageDraw模块 图片绘制(图片上自定义绘制) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

人生不易且無趣,一起來找點樂子吧。歡迎評論,和文章無關的也可以。

?

?

?

這次說下ImageDraw module,其實從名字上就可以看出來,這個模塊的功能是什么。就是在圖片上繪制一些東西,比如文字,簡單圖形啊什么的。

下面我們就來看看模塊下的幾個方法的運用。

這次換張圖片:

首先,如果我們想要對圖片進行操作,我們先要得到他的對象,然后再調用方法。Draw方法,返回ImageDraw對象。

?

ImageDraw.Draw():

方法要吞掉一個Image對象,返回ImageDraw對象

im = Image.open('5.jpg')draw = ImageDraw.Draw(im)#mode 默認為im.mode

類似于這個樣子,draw有兩個參數,除此外,還有mode,默認情況和im.mode相同,如果想轉變,改就是了。

draw就是我們獲得的對象。就可以調用下面的方法進行處理了。

?

line(xy, fill):

望文生義,劃線。xy是坐標序列,列表,元祖等都可以,只要是序列類型皆可。而且數量不限。比如【0,0,10,20,30,50,70,100】,他就會分別從(0,0),(10,20),(30,50),(70,100)間劃線。

fill參數是線的顏色。

def line():im = Image.open('5.jpg')draw = ImageDraw.Draw(im)#mode 默認為im.modedraw.line((0, 0)+im.size, fill=120)draw.line((0, im.size[1], im.size[0], 0), fill=120)im.save('line.jpg')im.close()

來看這個,參數是個tuple,第一條線是從圖片的左上角到右下角,第二條線是從左下,到右上。所以執行結果也就是在圖片上打個大花叉。

?

text(xy, text, fill, font, spacing, direction):

在圖片上繪制文字,這種功能隨便的手機編輯一下就是了哈,這里我們不討論他的功能實用性。只是單純的學習。

xy是文字左上角起始位置,text是待編輯文字,fill文字顏色。font是個ImageFont的實例,這個我們后面去講,spacing是字體間距,direction參數是排列的方向,參數值有rtl,ttb兩種。不好記?很好記,right to left, top to button。開頭縮寫而已。(整的那么高大上!!!)

?

我們再說下這個:

arc(xy,start,end,fill):

這個方法是畫圓,xy需要給個box。比如在像素點(0,0)和(100,100)之間畫圓。start是初始角度,0度為正右方。end當然就是結束角度,不過注意,畫圓方向為順時針,fill同上。來看個例子:

def text():base = Image.open('5.jpg').convert('RGBA')d = ImageDraw.Draw(base)d.text((10, 10), 'Hello\nworld', fill=(255, 255, 255, 0))#font是個imagefont實例 spacing字體間距 direction rtl ttbd.text((10, 60), 'World', fill=(255, 255, 255, 255))d.arc([60,60,100,100],0,270,fill='red')#box, start angle, end angle, fill colorbase.save('txt.png')base.close()

?

寫了個hello word,畫了三分之一圓。

?

chord(xy, start, end, fill, outline):

這個方法和arc功能相同,outline是劃線顏色,而fill是填充顏色。與arc的區別是,畫完圖之后,會將末位點和起始點連接起來。

def chord():#和弦base = Image.open('5.jpg').convert('RGBA')d = ImageDraw.Draw(base)d.chord([60,60,120,100],0,270,fill='blue', outline='yellow')base.save('chrod.png')base.close()

至于chord的含義,我不太懂,有和弦、基調的意思。不知具體想要表達的意思,估計是鏈接吧,藕斷絲連?(什么鬼!!!)

無妨:

?

pieslice():

參數和功能都和chord一樣,區別在于最后將末位點與起始點連接到中心:

?

ellipse()

很簡單,就是畫橢圓嘛。參數和畫圓的都一樣,而且通過arc也可以實現相同的功能,直接看下效果吧。

?

rectangle(xy,fill,outline)

功能明確,參數清晰是吧。都不需要過腦子的(也可能是根本就沒有),xy給出rectangle的左上和右下的像素點坐標,fill填充,outline是pen color。

def rectangle():base = Image.open('5.jpg').convert('RGBA')d = ImageDraw.Draw(base)d.rectangle([60,60,120,80],fill='red',outline='white')base.save('rectangle.png')base.close()

?

polygon(xy,?fill,?outline)

polygon,多邊形。xy又是個像素點坐標的序列。我們隨便給幾個點:

def polygon():base = Image.open('5.jpg').convert('RGBA')d = ImageDraw.Draw(base)d.polygon([60,60,100,60,130,80,80,150],fill='white',)base.save('polygon.png')base.close()

?

point(xy,?fill)

這個有趣,畫點點。參數沒什么區別。直接看看例子吧:

def point():base = Image.open('5.jpg').convert('RGBA')d = ImageDraw.Draw(base)d.point([60,60,62,60,64,60,66,60,68,60,70,60],fill='white')base.save('point.png')base.close()

橫著一排點了幾個點,fill是點點顏色:

好小,手動指明。哈哈.......

?

ok,這個模塊差不多就這樣吧,還有幾個方法的開發在測試階段,但是功能也高級不到哪去。就這樣了,拜。

?

?

?

后記:

括號里的內容是第二次審看添加的內容,旨在您閱讀時引起極大的舒適。別人怎么看你不重要,你怎么看你也不重要。重要的是你怎么看別人怎么看你,別管他,做你就好。

總結

以上是生活随笔為你收集整理的python手记(四):pillow(四) ImageDraw模块 图片绘制(图片上自定义绘制)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。