首頁  >  文章  >  後端開發  >  Python實作表情包的程式碼實例

Python實作表情包的程式碼實例

Y2J
Y2J原創
2017-05-16 11:58:525105瀏覽

本文主要介紹了使用Python進行簡單圖像處理的方法以及Python自動生產表情包的實例,具有很好的參考價值,下面跟著小編一起來看下吧

作為一個數據分析師,應該信奉一句話-「一圖勝過千言萬語。不過這裡要說的並不是數據視覺化,而是一款全民的產品形態──表情包! ! ! !

表情包不只是一種符號,更是一種文化-是促進社交甚至社會發展的動力之一,就像懶。我們堅持認為,一張優秀的表情包,應該是一幅藝術品,是那忽如一夜春風來的靈感爆發,是那嘈雜切切錯雜彈的情思激盪,是那直掛雲帆濟滄海的壯志豪情,是那一覽天下眾山小的榮耀勝利——是不可以容忍碼農用其慣有的形式固定、流程固定、毫無美感、毫無藝術的變幻和驚喜的直線思維解構。然而,在生產表情包的過程中,如果只是機械地把圖片導進PS——改文字——導出,那也太low了,所以還是把這些很low的機械化的重複動作交給程序來做吧。

之前一直以為映像的自動處理,要靠JavaScript腳本控制PS或AI;後來發現Python其實也可以做一些簡單的影像處理,雖然可能比不上MATLAB強大。於是對於影像處理,複雜的部分依然在PS或AI中人工完成,簡單的處理就可以用Python程式完成。

在開工之前,先讓我們探視一下表情包界里程碑式的人物,感謝他們大力推動了表情包在歷史潮流中的顯著進步,他們的英名將長期被人民大眾津津樂道,他們的音容笑貌將在人們的日常社交中經久不衰,他們的卓越貢獻將永遠錒刻於表情包史的豐碑上!

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

素材準備

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

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

圖片疊加

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

from PIL import Image, ImageDraw, ImageFont
img = Image.open(".\background.jpg")
jgz = Image.open(".\jgz.jpg")
img.paste(jgz,(73,42))
img.show()

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

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

文字疊加

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

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

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

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

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

問題昇華

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

  • 表情包下留白的空間是有限的

  • 中文和英文以及標點符號佔據的空間不同

  • 如果文字太長,就需要換行;可是如果行太多,圖片就放不下

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

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

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

最重要的是,老夫經常說的“信不信我分分鐘批量做你大堆的表情包”,終於成為現實了…

【相關推薦】

1. 特別推薦「php程式設計師工具箱」V0.1版本下載

2. Python免費影片教學

3. Python物件導向影片教學

#

以上是Python實作表情包的程式碼實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn