天天看點

Python自動生成表情包,Python在手,從此鬥圖無敵手!

來源:CSDN

ID:CSDnews

作為一個資料分析師,應該信奉一句話——"一圖勝千言"。不過這裡要說的并不是資料可視化,而是一款全民向的産品形态——表情包!!!!

表情包不僅僅是一種符号,更是一種文化,是促進社交乃至社會發展的動力之一,就像懶。

我們堅持認為,一張優秀的表情包,應該是一幅藝術品,是那忽如一夜春風來的靈感爆發,是那嘈嘈切切錯雜彈的情思激蕩,是那直挂雲帆濟滄海的壯志豪情,是那一覽天下衆山小的榮耀勝利,是不可以容忍碼農用其慣有的形式固定、流程固定、毫無美感、毫無藝術的變幻和驚喜的直線思維解構。

然而,在生産表情包的過程中,如果隻是機械地把圖檔導進PS --> 改文字--> 導出,那也太low了,是以還是把這些很low的機械化的重複動作交給程式來做吧。

之前一直以為圖像的自動處理,要靠JavaScript腳本控制PS或者AI;後來發現Python其實也可以做一些簡單的圖像處理,雖然可能比不上 MATLAB 強大。

于是對于圖像處理,複雜的部分依然在PS或者AI中人工完成,簡單的處理就可以用Python程式完成。

在開工之前,先讓我們瞻仰膜拜一下表情包界裡程碑式的人物,感謝他們大力推動了表情包在曆史潮流中的顯著進步,他們的英名将長期被人民大衆津津樂道,他們的音容笑貌将在人們的日常社交中經久不衰,他們的卓越貢獻将永遠镌刻于表情包史的豐碑上!

Python自動生成表情包,Python在手,從此鬥圖無敵手!

(如果表情可以收版權費的話,那就不用辛辛苦苦地去打球、拍戲、播音了……)

Python自動生成表情包,Python在手,從此鬥圖無敵手!

素材準備

這裡我們以網絡上流傳最廣的金館長表情為中心,以萌萌哒的熊貓頭作為背景,底下加上文字就能構成一張表情包。

Python自動生成表情包,Python在手,從此鬥圖無敵手!
Python自動生成表情包,Python在手,從此鬥圖無敵手!

然後用PS處理一下圖檔大小,模闆大小設為250*250,表情裁剪一下白邊。

Python自動生成表情包,Python在手,從此鬥圖無敵手!

圖檔疊加

第一步工作是把表情疊加到模闆上,注意到我們的表情素材是白底而不是透明,是以位置要控制好,不然會遮蓋住輪廓。

draw
= ImageDraw.Draw(img)ttfront = ImageFont.truetype('simhei.ttf', 
24)draw.text((32, 190),"我的内心毫無波動 甚至還想笑",fill=(0,0,0), 
font=ttfront)img.show()img.save(".Python生成的表情包.jpg")           

複制

這樣就會看到合成的圖檔了:

Python自動生成表情包,Python在手,從此鬥圖無敵手!

這張圖檔下方還有一截留白,那是給我們最後一步添加文字用的。come on,魔性的笑容已經呈現,接下來就是最後一擊,are you OK?! 哦不,are you ready?!

Python自動生成表情包,Python在手,從此鬥圖無敵手!

文字疊加

盡管表情包的核心是表情,然而一行簡短而又震撼的文字往往能起到直擊靈魂的畫龍點睛的作用。

draw
= ImageDraw.Draw(img)ttfront = ImageFont.truetype('simhei.ttf', 
24)draw.text((32, 190),"我的内心毫無波動 甚至還想笑",fill=(0,0,0), 
font=ttfront)img.show()img.save(".Python生成的表情包.jpg")           

複制

這樣就生成了一張完整的表情包了:

Python自動生成表情包,Python在手,從此鬥圖無敵手!

其中 draw.text()是往圖層裡輸入文字,是以可以不斷執行這條指令以在圖檔裡添加多層文字。

你還可以導入多張表情,以及多個文本台詞,這樣就可以大規模批量自動生産表情包了……

Python自動生成表情包,Python在手,從此鬥圖無敵手!

問題升華

你以為到這裡就結束了嗎?too young啊!請童鞋們思考這個問題:

  1. 表情包下留白的空間是有限的
  2. 中文和英文以及标點符号占據的空間不同
  3. 如果文本太長,就需要換行;可是如果行太多,圖檔就放不下

是以,當你腦中突然閃現出一句既包含中文也有英文還有N多标點符号以增強語氣的台詞時,怎麼設計一個算法,用來尋找合适的字号大小,文本插入位置,文本在哪些地方換行,使文本能在有限空間居中展示,而且還要滿足一定的觀感呢?

Python自動生成表情包,Python在手,從此鬥圖無敵手!

算了,還是在這裡結束吧……

于是,通過這篇嚴肅正經的教程,我們學會了使用Python進行簡單圖像處理的方法,更get到一項實用的神技:自動生産表情包。

最重要的是,老夫經常說的"信不信我分分鐘批量做你大堆的表情包",終于成為現實了……對此,我想說,完了我愛上了Python!因為Python也太好玩了,方向太多了!