好好的中文字,為什麼要轉成圖片檔呢?其一是為了要做浮水印,其二,是有些好用的影片製作軟體不支援中文字輸入,所以只好先把中文字轉換成圖片檔再拿來使用即可。例如之前站長曾經介紹過的一個好用的外國影片快速製作軟體VideoMakerFX,可以在短短幾分鐘之內就做出精美的簡報影片,不過就是不支援中文字輸入,那麼我們這一篇文章中介紹的Python程式正好可以派上用場。

我們的程式原理就如同前一篇中文浮水印的程式一樣,前半部也是要先產生一個中文文字的影像,但是不同的是,我們在產生完影像img之後,就直接以PNG格式來存檔。在第14行產生影像時是一個關鍵,後面的顏色值一定要設定為(255,0,0,0),這樣子產生出來的影像檔以PNG格式來儲存的時候才會是透明的背景。

# -*- coding: utf-8 -*-
# Program Name: txt2img.py
# Author: skynet
# Date: 2015/10
# 

from PIL import Image, ImageFont, ImageDraw

def save_text(text, fontname, fontsize, fontcolor):
    img0 = Image.new("RGBA", (1,1))
    draw0 = ImageDraw.Draw(img0)
    font = ImageFont.truetype(fontname, fontsize)
    t_width, t_height = draw0.textsize(unicode(text, 'UTF-8'), font=font)
    img = Image.new("RGBA", (t_width, t_height), (255,0,0,0))
    draw = ImageDraw.Draw(img)
    draw.text((0,0),unicode(text, 'UTF-8'), font=font, fill=fontcolor)
    img.save("textimage.png", "PNG")
    del draw0, draw
    del img0, img 

# main program goes here
save_text("中文字標題", 'font/wt014.ttf', 52, (0,0,255,128))

我們把主要內容寫成save_text函數,在呼叫此函數的時候,可以指定文字內容,字型檔的所在位置,文字的大小以及文字的顏色,其中顏色的值是以(R,G,B,A)格式來設定,你可以自己試試看效果如何。

根據前面幾個程式的經驗,你可以自已試試看輸入一個文字檔,然後把文字檔的內容每一行都輸出一個文字影像檔,達成更自動化的功能喔。

(396)