Python練習第一題,在圖片上加入數字
題目:在頭像(QQ、微信等)右上角加上紅色的數字,類似於微信未讀信息數量那種提示效果。
下面是示例,在圖片上加數字。
用PS很簡單就可以做到,但是如何用Python完成呢?
一、思路:利用Python強大的圖片處理庫——Pillow
推薦閱讀官方文檔(Pillow (PIL Fork) 4.0.0 documentation)
下面介紹今天會用到的模塊:The ImageDraw Module,他的功能如下,
支持2D圖像
創建繪畫對象
基本繪畫操作
- 弧/弦/扇形 chord arc pieslice (bbox, strtAng, endAng)
- 橢圓 ellipse (bbox)
- 線段/多段線 line (L) draw.line(((60,60),(90,60), (90,90), (60,90), (60,60))) #draw a square
- 點 point (xy) #單像素點很小看不清,實際中可用實心小圓代替
- 多邊形 polygon (L) draw.polygon([(60,60), (90,60), (90,90), (60,90)]) #draw a square
- 矩形 rectangle (bbox) # first coord屬於矩形, second coord不屬於
- 文字 text(xy,message,font=None) 繪製文字message,文本區域左上角坐標為xy drawable.text((10, 10), "Hello", fill=(255,0,0), font=None)
- 文字大小 textsize(message,font=None) 給定文字message,返回所佔像素(width,height)
可選參數
矢量字體支持
二、示例練習
環境:Python3.5
from PIL import Image, ImageDraw, ImageFontimg = Image.open("girl.jpg")draw = ImageDraw.Draw(img)myfont = ImageFont.truetype("C:/windows/fonts/Arial.ttf", size=80)fillcolor = "#ff0000"width, height = img.sizedraw.text((40,40),"hello", font=myfont, fill=fillcolor)img.save("result.jpg","jpeg")
效果展示:
也就是在原圖上加入文字,下面一步步分析過程。
from PIL import Image, ImageDraw, ImageFont
首先導入相關模塊,沒有安裝可以直接用pip安裝
img = Image.open("girl.jpg")draw = ImageDraw.Draw(img)
打開圖片girl.jpg
myfont = ImageFont.truetype("C:/windows/fonts/Arial.ttf", size=80)fillcolor = "#ff0000"width, height = img.size
Arial.ttf是電腦上安裝的字體,fillcolor是填充顏色,#ff0000是十六進位顏色
draw.text((40,40),"hello", font=myfont, fill=fillcolor)img.save("result.jpg","jpeg")
最後就是添加文字了,(40,40)是位置,"hello"自定義,最後保存。
三、總結
好了,今天的題目講完了,其中我也遇到很多困難,我準備在圖片中加入中文,但是文字無法正常顯示,朋友們,有誰知道答案嗎?
打算以後每天寫一篇題目解析,這些題目在github上都有,最後求一波star(?? . ??)
本題github地址:zhangslob/Image
這是@史江歌大神整理的Python題目,我會詳細講解過程Yixiaohan/show-me-the-code
最後,我想給自己定個目標,2017年利用Python找到一份工作,養活自己。
你呢?
推薦閱讀:
※機器學習之Python基礎(五) --協程,分散式
※幾個提高工作效率的Python內置小工具
※高德API+Python解決租房問題
※爬蟲入門系列(一):快速理解 HTTP 協議