用Python生成自己專屬的手機春節壁紙
- 2020 年 2 月 20 日
- 筆記
大家好,我是朱小五
馬上就要過年了,要不要換一個喜氣洋洋、洋洋洒洒、洒掃應對、對牛彈琴的手機壁紙呢?
今天小五給大家表演的節目是:用Python生成自己獨一無二的手機壁紙。
首先我們需要選擇一個現成的手機壁紙作為模板,我選擇了這種以自己姓氏為主題的專屬手機壁紙。








<< 左右滑動查看更多 >>
這其實是個之前迎接跨年的手機壁紙,先利用ps將圖片中的2020和其他文字去除。

嘗試給圖片添加文字,這裡用到的是 PIL(Python Image Library),它是python的第三方影像處理庫。
Image類是PIL中的核心類,有很多種方式來對它進行初始化,比如從文件中載入一張影像,處理其他形式的影像,或者是從頭創造一張影像等。
下面是本文涉及的一些PIL Image類中常用的方法:
- save(filename,format) (保存指定格式的影像)
- open(filename,mode) (打開一張影像)。
- paste(region,box,mask) (將一個影像粘貼到另一個影像)
先拿最簡單的字體(黑體)嘗試吧。
from PIL import Image,ImageDraw,ImageFont a = '小王小王' font = ImageFont.truetype('simhei.ttf', 100) # 定義文本,黑體 img = Image.open('底圖.png') draw = ImageDraw.Draw(img) # 新建畫布繪畫對象 draw.text((200,700),a,(0,0,0),font=font) #在新建的對象上坐標(200,700)處開始畫出黑色文本 img.show() img.save('壁紙.png')
運行:

可以可以,第一步是這個意思,不過就是有點丑。
下面開始嘗試將文字傾斜。
結果沒有找到比較好的方法,搜索得到的結論是文字傾斜,不如將圖片傾斜。
於是我打算利用rotate旋轉程式碼來旋轉圖片,以達到傾斜的效果。
from PIL import Image,ImageDraw,ImageFont a = '小王小王' font = ImageFont.truetype('simhei.ttf', 100) # 定義文本 img = Image.open('底圖.png') img=img.rotate(-15) #旋轉程式碼 draw = ImageDraw.Draw(img) # 新建畫布繪畫對象 draw.text((200,700),a,(0,0,0),font=font) #在新建的對象上坐標(200,700)處開始畫出黑色文本 img.show() img.save('壁紙.png')
運行:

額,是傾斜了
不過不是這個效果
是那種很漂亮的,傾斜字體
冥思苦想,
想到將文字寫在一個透明的圖片上,然後旋轉這個圖片後,將圖片覆蓋到有底色的底圖上。
不知道大家看懂了嗎,直接嘗試一下吧。
其中img1是透明底的圖片,img2是有底色的底圖
from PIL import Image,ImageDraw,ImageFont a = '小王小王' # 定義文本 b = '可愛大王' font = ImageFont.truetype('hylx.ttf', 180) img1 = Image.open('透明.png') img1=img1.convert('RGBA') draw = ImageDraw.Draw(img1) # 新建畫布繪畫對象 draw.text((250,550), a,(255,243,211),font=font) draw.text((350,800), b,(255,243,211),font=font) img1=img1.rotate(15) #旋轉程式碼 img2 = Image.open('底圖.png') img2=img2.convert('RGBA') img2.paste(img1,(0,0),img1) # 將img1粘貼到img2上 img2.show() img2.save('壁紙.png')
運行:

對對對,就是這種半人半魚的效果。
在手機上簡單測試一下效果吧

看起來很喜慶嘛!
大家喜歡的話也可以嘗試一下,更換字體和模板底圖,總有一款適合自己~
獲取程式碼和文件,關注「凹凸數據」後台回復「壁紙」~
作者:朱小五,互聯網數據分析師。熱衷於Python爬蟲,數據分析,可視化,個人公眾號《凹凸玩數據》,有趣的不像個技術號~