1. 程式人生 > >python,讓文字變成圖片

python,讓文字變成圖片

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,讓文字變成圖片