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模块 图片绘制(图片上自定义绘制)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: dilink虚拟服务器怎么设置,最简单的
- 下一篇: 软件工程逻辑覆盖测试
