用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爬蟲,數據分析,可視化,個人公眾號《凹凸玩數據》,有趣的不像個技術號~