最近常常會在羣聊中看見這樣的老式手機短信的表情包,讓我十分感興趣。 python
我也想作一些這樣的圖片去逗逗損友,因而我搜了一圈,雖然網上有現成的生成器,可是廣告比較多。因而還想本身作一個,順便練練Image Processing。git
一開始本打算在Web Side搞定的,可是發現我對canvas繪圖並不熟悉,最後轉向了靠譜的Pillow。github
在網上搜索了一大圈之後,找到了一張比較清晰且乾淨的原始圖片。而後通過PS一番處理,獲得一張空白短信圖。 canvas
圖片中能夠清晰地看見手機屏上小小的晶格,那麼確定要用像素風格的字體來繪製Text。ide
首先打開原始圖片:字體
im = Image.open("images/3.png") # 打開圖片
複製代碼
隨後繪製Rotated Text:spa
text = 'zzkia'
width, height = font.getsize(text)
image2 = Image.new("RGBA", (width, height))
draw2 = ImageDraw.Draw(image2)
draw2.text((0, 0), text=text, font=font, fill=subtitle_color)
image2 = image2.rotate(line_rotate, expand=1)
px, py = subtitle_pos
sx, sy = image2.size
im.paste(image2, (px, py, px + sx, py + sy), image2)
複製代碼
咱們發現短信中包含正文以及右上角的字數顯示,因而改變字體顏色,再次繪製便可。所用字體顏色爲(129, 212, 250, 255)
。code
固然繪製正文的時候要注意換行,不能讓文字超出屏幕的邊界。我採用的方法是使用Python標準款中的textwrap
。先限定每行max length,把String類型的text文本轉換爲List,再加入gap屬性增長每行文字之間間隙,最後一行行繪製文本。具體如何實現能夠在源代碼中查看。cdn
由於既有Python Server Side也有Web Side的Serives,因此最後用Docker compose編排一下進行發佈,也能提供一個外部的訪問。blog
能夠訪問Github查看源代碼: github.com/dcalsky/zzk…
也能夠直接進入: zzkia.noddl.me:8020