[學習筆記]用Python簡易向喜歡的人表白


前幾天是情人節,就用Python圖像庫PIL來搞點事情。

先看圖:

其實這樣看不出什么來,然后需要放大:

放大以后就能看到你相對女神說的話。

但是對於學計算機的我來說,更想琢磨是怎樣的流程完成的這個圖。

--------------------------------------------------------------分割線--------------------------------------------------------------

我們需要用到的是PIL庫中的Image,ImageDraw,ImageFont來進行操作

我們需要做的第一步就是使用Image.open()函數來讀取圖像,並且使用Image.load()函數來獲取像素值,圖像是由像素點組成的,因此我們需要獲取並通過填充字體的顏色來實現改變。

1 #使用pillow.Image讀取圖像,並使用load函數獲取到每一個像素值
2 img_raw = Image.open(img_path)
3 img_array = img_raw.load()

當我們讀取完圖像並分析完以后需要新建一個畫布來盡享填充。

#新建畫布,並選擇好使用的字體和字體大小
img_new = Image.new("RGB",img_raw.size,(0,0,0)) 
draw = ImageDraw.Draw(img_new)
font = ImageFont.truetype('路徑',font_size)

然后我們需要不斷輸入“XXX",來填充文字

1 #需要不斷輸入“xxx”,就要用while循環yield來實現一個生成器
2 def characte_generator(text):
3     while True:
4         for i in range(len(text)):
5             yield text[i]

再將字體加上顏色寫入新創建的畫布中

1 #給字體加上顏色寫入新創建的畫布中
2 for y in range(0,img_raw.size[1],font_size):
3     for x in range(0,img_raw.size[0],font_size):
4         draw.text((x,y),next(ch_gen),font = font,fill = img_array[x,y],direction = None)

最后保存在圖片

 1 img_new.convert('RGB').save('F://love.jpeg')

這樣就大功告成了。

完整代碼如下:

 1 from PIL import Image, ImageDraw, ImageFont
 2 
 3 font_size = 6
 4 text = " 情人節快樂 "
 5 img_path = "F://Python//1.png"
 6 #使用pillow.Image讀取圖像,並使用load函數獲取到每一個像素值
 7 img_raw = Image.open(img_path)
 8 img_array = img_raw.load()
 9 #新建畫布,並選擇好使用的字體和字體大小
10 img_new = Image.new("RGB",img_raw.size,(0,0,0))
11 draw = ImageDraw.Draw(img_new)
12 font = ImageFont.truetype('C://Windows//Fonts//STXINGKA.TTF',font_size)
13 #需要不斷輸入“xxx”,就要用while循環yield來實現一個生成器
14 def characte_generator(text):
15     while True:
16         for i in range(len(text)):
17             yield text[i]
18  
19 ch_gen = characte_generator(text)
20 #給字體加上顏色寫入新創建的畫布中
21 for y in range(0,img_raw.size[1],font_size):
22     for x in range(0,img_raw.size[0],font_size):
23         draw.text((x,y),next(ch_gen),font = font,fill = img_array[x,y],direction = None)
24 img_new.convert('RGB').save('F://love.jpeg')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM