鬥圖?教你用Python製作表情包

AI科技大本營發表於2019-01-29

640?wx_fmt=jpeg


作者 | Ahab 

來源 | Ahab雜貨鋪 (ID:AhabBin)


“表情包”是現在非常流行的交流方式,通過一張圖片就能把文字不能表達或不便於表達的情感給表示出來,表情包一經誕生,就統治了中國人的社交圈,尤其是年輕人,他們的社交方式是所謂“天可不聊,圖不可不鬥”,幾乎任何對話都會出現表情包的身影,一言不合就鬥圖,自己也會在聊天中發幾個表情包,可是總會造成一些小誤會,比如下面的圖


640?wx_fmt=png


有好多朋友看到這個表情包之後誤以為這也是我用Python做的,其實不然,這個圖就是網上普通的表情包,但是今天我要用Python做幾個表情包。


今天製作表情包用到的技術還是之前提到的Turtle庫,可以從之前的文章除了畫佩奇我們還要玩點更高階的,去學習Turtle的常用語法,然後就是PIL庫,之前通過這篇文章:Python騷操作|用Python來P圖介紹過PIL的幾個用法,今天的案例算是做一個小小的複習。話不多說先上圖。


640?wx_fmt=png


這是一個捂臉的表情,可以表達內心千萬只***奔騰而過,使用Turtle來實現,可以將這個圖分成以下幾個部分:臉,嘴巴,牙齒,兩邊的眼淚,手指和手腕,完整的程式碼和語法不過多解釋,貼一個畫臉的程式碼。



1# 畫臉
2turtle.speed(5)
3turtle.setup(900, 600, 200, 200)
4turtle.pensize(5)
5turtle.right(90)
6turtle.penup()
7turtle.fd(100)
8turtle.left(90)
9turtle.pendown()
10turtle.begin_fill()
11turtle.pencolor("#B26A0F")  # head side color
12turtle.circle(150)
13turtle.fillcolor("#F9E549")  # face color
14turtle.end_fill()




640?wx_fmt=png


第二個圖是斜眼笑,表達的意思你懂得2_02.png


640?wx_fmt=jpeg


來看第三幅圖,這個圖是使用PIL庫來生成的,其實這兩個圖是兩張圖拼起來的。首先呢,我們需要找兩張圖片,一張做表情包的背景,一張做表情。我們就以萌萌噠的熊貓頭作為背景,然後試著在背景圖上加入金館長嘻哈表情。


640?wx_fmt=jpeg


640?wx_fmt=jpeg


現在我們要把金館長的表情疊加在熊貓頭的背景圖中,需要注意的是要在程式碼中控制好金館長的表情疊加位置,不然會遮蓋住其他輪廓。



1from PIL import Image,ImageDraw,ImageFont
2
3img = Image.open("640.jpg")
4jgz = Image.open("641.jpg")
5img.paste(jgz,(63,46))




640?wx_fmt=jpeg


圖片的下方是留有一部分空白的,我們可以新增一些文字。



1 from PIL import Image,ImageDraw,ImageFont
2 
3 img = Image.open("640.jpg")
4 jgz = Image.open("641.jpg")
5 img.paste(jgz,(63,46))
6 
7#控制表情的疊加位置
8 draw = ImageDraw.Draw(img)
9 font = ImageFont.truetype("simyou.TTF",24)
10 draw.text((16,200),"Ahab雜貨鋪!", fill = (0,0,0), font = font)
11 #控制文字新增位置
12 img.show()
13 img.save("生成的表情包.jpg")



640?wx_fmt=jpeg

(本文為 AI科技大本營投稿文章,轉載請聯絡作者。)


公開課預告

今晚8點直播


如何用AI技術為黑白老照片上色?本次公開課中,百度高階研發工程師李超將講述對抗生成網路相關,學術界的研究現狀和應用場景,以及GAN在百度視覺+百度PR+新華社合作的煥彩專案中的應用。


640?wx_fmt=png


推薦閱讀

640?wx_fmt=png

相關文章