前幾天是情人節,就用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')
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/194146.html
標籤:Python
