標籤:
將你的 QQ 頭像(或者微博頭像)右上方加上紅色的數字,類似於未讀資訊數量那種提示效果。 類似於圖中效果:
好可愛>%<!
題目來源:https://github.com/Yixiaohan/show-me-the-code,感謝@史江歌以及其他人,讓我找到了一個系統的學習python模組的好地方。
看到這個題目的第一印象是——額,難不成讓我找qq的API,然後在手機APP的壁紙上提示QQ訊息?好吧,我承認自己想複雜了,所以第二個想法就來了。因為博主最近學習比較雜亂無章,所以學習了tkinter以及opencv模組,後來發現大多數人使用PIL模組處理映像,好吧,由於上次映像指紋的識別用到了PIL模組以及Pillow模組,那麼就使用三種方法把圖片處理一下吧,代碼如下:
1 # coding=utf-8 2 """ 3 使用tkinter 4 """ 5 __author__ = ‘wing1995‘ 6 from tkinter import * 7 8 9 def tk_image():10 root = Tk()11 12 w = Canvas(root, width=500, height=500)13 w.pack()14 15 photo = PhotoImage(file="C:/Users/wing1995/Desktop/classic.gif")16 w.create_image(0, 0, anchor=NW, image=photo)17 w.create_text(480, 60, text="9", fill="red", font=(‘Times‘, 40))18 19 mainloop()20 21 if __name__ == "__main__":22 tk_image()
使用tkinter模組的好處是,方便,但是由於沒有學到如何將製作的視窗中的畫布儲存為圖片的形式,所以只能直接把視窗給大家看啦:
第二張方法代碼:
1 # coding=utf-8 2 __author__ = ‘wing1995‘ 3 """ 4 使用OpenCV 5 """ 6 import cv2 7 8 img = cv2.imread(‘classic.jpg‘) 9 10 font = cv2.FONT_HERSHEY_SIMPLEX11 cv2.putText(img, ‘9‘, (450, 100), font, 4, (0, 0, 255), 4)12 13 cv2.imshow(‘OpenCV‘, img)14 15 cv2.waitKey(0)16 cv2.destroyAllWindows()
同樣簡單明白,I love python!結果如下:
估計是我的網速問題,弄得幾張圖都碎掉了,以後有空研究一下這個問題,或許是像素的丟失,導致圖片的不完整,也就破圖了,不管怎樣還是覺得第一張圖片好看點,ok,上第三類方法代碼:
1 # coding=utf-8 2 __author__ = ‘wing1995‘ 3 """ 4 使用PIL 5 """ 6 from PIL import Image, ImageDraw, ImageFont 7 8 sourceFilename = "classic.jpg" 9 avatar = Image.open(sourceFilename) # 開啟圖片檔案10 drawAvatar = ImageDraw.Draw(avatar) # 建立畫刷,用來將數字寫在圖片上11 12 myFont = ImageFont.truetype("C:/Windows/Fonts/simsunb.ttf", 60) # 使用特定字型寫字13 14 drawAvatar.text([450, 60], text="9", fill=(255, 0, 0), font=myFont)15 16 avatar.show()17 avatar.save(‘classic_pil.jpg‘)
這一次,學會儲存圖片,話說opencv中儲存圖片也很簡單的不,只不過腦袋一時短路,忘記了,片:
不得不說,雖然PIL模組沒怎麼學習,但是上手仍然很簡單,而且很詳細,比如字型的設定,估計其他模組也有這樣的功能,只是自己沒發現而已,ok了,那麼第一個練習題就這樣了,有些代碼明顯需要改進,比如標誌“9”的座標應該放在同一個地方,便於比較之類的,大小也應該相同,代碼能夠函數化就好了,畢竟python處處是對象。明天繼續第二個,以及coursera的文法溫習,晚上玩一玩微博資料API吧。
額,話說,我扔下機房幾個電腦的軟體按照不管,自己自娛自樂,是不是有點偷懶?好餓,去上課了。
python模組學習第 0000 題