PILで文字列を画像に書き出してみたよ。

PIL で文字列から画像を生成する必要があったので、 色々ためしてみたよ。

書き出す為のフォントは 独立行政法人情報処理推進機構のフォント(IPAフォント)付き をあらかじめ /usr/local/grass5 にインストールしておいた。

#!/usr/bin/env python
# vim: fileencoding=utf-8 :

from PIL import Image, ImageDraw, ImageFont

# encoding="unic"を指定しないと日本語が書き出せなかった。
font = ImageFont.truetype('/usr/local/grass5/fonts/ipagp.ttf',
                          25, encoding='unic')

image = Image.new('RGBA', (100, 100))
draw = ImageDraw.Draw(image)

# fontでフォント指定、fillでカラー指定出来る。
draw.text((0, 0), u'ほげほげ', font=font, fill='#000000')

# pngで書き出す。
image.save('hoge.png', 'PNG')

書き出す文字列が改行を含んでいると、 最初の行しか書き出されないみたい。 それにサイズを適当に指定してしまっているので、 長い文字列が来るとはみ出してしまう。

そこで、 ImageFontgetsize で文字列がとるサイズを取得出来るみたいなので、 コレを使ってサイズを取得してみる。

#!/usr/bin/env python
# vim: fileencoding=utf-8 :

from PIL import Image, ImageDraw, ImageFont

s = u"""クロワッサン食べたくなって来たなぁ。
おいしいクロワッサンをスープパスタと食べる。

あ、想像したら、ハラへって来たよ。"""

font = ImageFont.truetype('/usr/local/grass5/fonts/ipagp.ttf',
                          25, encoding='unic')

# 改行で分割して幅と高さを取得する。
lines   = []
width   = 0
height  = 0
for l in s.split('\n'):
    lines.append(l)
    # 文字列を渡すと幅と高さのタプルが返ってくる。
    w, h = font.getsize(l)
    if w > width:
        width = w
    if h > height:
        height = h

# 取得した幅と高さを使ってサイズを指定。
image = Image.new('RGBA', (width, len(lines) * height))
draw = ImageDraw.Draw(image)

# 行ごとに書き出す。
for i, l in enumerate(lines):
    draw.text((0, i * height), l, font=font, fill='#000000')
image.save('hoge.png', 'PNG')

コレで実際に書き出してみたのがコチラ。 透過PNGなので、IEだとちょっとアレですが。

と思いきや、諸事情により、データが消えちゃった。すいませんすいません。

文字列自体に特に意味はありません。

Posted at: 
2007/10/14 08:23:55
4 Comments
0 TrackBacks
Tags: 
PIL
Python
Trackback: 
http://humming.via-kitchen.com/2007/10/14/string-2-image-using-pil/trackback/

TrackBacks

まだ登録されていません。

Comments

ENDLESS

おっ!!トゥ晴らしい
☆ご苦労様です☆

Created at: 
2007/10/14 21:43:43

nobu

最初、日本語が書けなかった時は、正直焦ったよ!
上手く出来て、本当に良かった♪

Created at: 
2007/10/14 22:36:33

takao

wordpressでこんな感じのがありますね。フィルタでできそうですね。そういえばsmileのフィルタもないなぁ…

# django blog作成中です

Created at: 
2007/10/15 12:48:33

nobu

wordpressってスゴイんすね。
Django blog頑張ってくださいね!

Created at: 
2007/10/16 10:56:47

Add Comment

Add Comment