python,讓文字變成圖片
阿新 • • 發佈:2018-01-12
encoding 但是 ret edraw del 執行 ima 進行 library
小白:讓文字變成圖片?很簡單啊,先在微信上打幾個字,再截圖,就是圖片啦!
西門吹雪:但是這種方式,你不能預先設置字體的屬性,以及圖片的背景顏色等。
本文介紹一種簡單的辦法,讓輸入的文字顯示到一張圖片中,並且可以對字體與顏色進行設置。
為了簡便地實現,這裏使用python來處理,並且結合mac系統上的alfred來使用。
小白:alfred?
西門吹雪:mac系統上的神奇武器,你值得擁有!
小白:倚天劍?
先演示一下,使用的效果:
有兩個程序要寫。
一個是創建圖片,設置圖片的背景顏色與字體的顏色,再把輸入的內容寫到圖片。
另一個程序,打開圖片,把文字顯示出來。
馬上開工,先是創建文字圖片:
# -*- coding: utf-8 -*- from PIL import Image,ImageDraw,ImageFont from bs4 import BeautifulSoup import sys g_temppng=‘tempclip.png‘ def cal_text_length(text): en_text_length=13 zh_text_length=18 zh_text_size=3 offset=8 if BeautifulSoup(text).originalEncoding==‘utf-8‘: w=zh_text_length*text.__len__()/zh_text_size+offset else: w=en_text_length*text.__len__() return w def generate_image(text,background_color,fill_color): height=128 font_size=18 w=cal_text_length(text) width=w+50 img=Image.new(‘RGB‘,(width,height),background_color) draw=ImageDraw.Draw(img) text_to_draw=unicode(text,‘utf-8‘) font = ImageFont.truetype(‘/Library/Fonts/華文黑體.ttf‘, font_size) draw.text(((width - w) / 2, (height - font_size) / 2), text_to_draw, font=font, fill=fill_color) del draw img.save(g_temppng) if __name__ == ‘__main__‘: text="no input" if len(sys.argv)>1: text=sys.argv[1] generate_image(text,‘#000000‘,‘#ffffff‘)
然後是打開圖片:
# -*- coding: utf-8 -*-
from PIL import Image
g_temppng=‘tempclip.png‘
if __name__ == ‘__main__‘:
img=Image.open(g_temppng)
img.show()
最後,為了能快速運行這兩個程序,這裏借且alfred來實現,寫兩個workflow,如下:
workflow的目錄結構:
然後就可以快速輸入關鍵字(ti),再輸入圖片文字了,比如:
再快速輸入關鍵字(io),打開圖片,比如(敲入io後):
小白:這麽簡單啊!
西門吹雪:這個演示是簡單的,但是這種用phthon寫代碼,再用框架快速執行的思路,卻是很有用的思路,很多有用的事情都可以做到,比如拷貝文件、查看天氣、爬取電影、英文翻譯、發送郵件、查md5、看網頁,自動化,等等...
小白:爬取電影?
python,讓文字變成圖片