この記事はPythonを使ってAAを画像に変換する記事です。その他の言語についてはこちらの記事を参照。
ズレずにAAを表示するためにテキストを画像にするライブラリ色々
ソースコード
文字列から画像への変換はPILというライブラリを使って行えます。フォントの読み込みも可能なので、AA表示対応の日本語フォントを読み込むこともできます。
conv.py
# coding: utf-8
import sys
from PIL import Image, ImageFont, ImageDraw
# reload(sys)
# sys.setdefaultencoding("utf-8")
# sys.getdefaultencoding()
aa = '''\
///////////////////////// ------\/////////ヽ
////:///////////////> "´ ∨////////∧
.///////////////> ´ ∨////////∧
///////////> ´ ∨////////∧
|///////,〃/ i//////////ハ
|////////i/ _ --――― 、--}//////////∧
|////////| ´ ト. ヽ \'/////////∧
|////////| .. イ i \ ノ ', \////////∧
|////////| . ´i i ー|-- 斗、. ', \///////∧
|////////| / | ハ ', ∧! ,ィf=ミ、 ',ー― ///////∧
|////////|' .、_|..斗七ヽト、 ヽ| u {::♥::} ゞ \ ',i///////////,∧
|////////| |/i/,.ィf=ミ ヽト、!| `¨¨¨´/ /\!.マニ ア//////,∧
|////////ハ / .ィ f:::♥ノ | / ///// / i |=イ/////////∧
|////////,∧ /{ ゞ `¨´ /, j/ /// ./イ / .| i i///////////
|/////////|.ヘ / 乂 ///// u / | | i!///////////
|/////////>j/ \ _ j/| .| ∧! !///////////
|/////// ∠ィ ヘ >_ ,ィv´ _) / | |/:::::∧ .|V//////////
|//////ゝ---一 ヘ ゝ----' u ゝ- ´ /i .| |:::::::::::∧!::∨/////////
|//////////| i ∧ ',≧=- __ .イ !ハ |:::::::::::::_:::乂////////
|//////////| ∧ ∧ ト{ } i {ーヘ !´ ̄ / アニ≧= ---
|//////////|/::::ヘ. ', |从 __ノi ', ノ ヘ| / /ニニニニニニ
|//////////|:::::::::::\{ヘ .|-< ゝ r 、 -、 / /ニニニニニニニ
|/////////ノ==-< ', | r' く ./ニニニニニニニニ
.ノ//>≦ニニニニニ\ }/ ` ´ \\ /ニニニニニニニニ
.///ニニニニニニニニニ\ `´ {ニニニニニニニニニ
.イニニニニニニニニニニニヽ /ニニニニニニニニニ
'''
lines = aa.split("\n")
font = ImageFont.truetype("../fonts/Saitamaar.ttf", 17)
w,h = max(font.getsize(line) for line in lines)
imag = Image.new("RGB", (w, h*len(lines)), "#ffffff")
draw = ImageDraw.Draw(imag)
for i,line in enumerate(lines):
draw.text((0, i*h), line, font=font, fill="#000000")
# 表示
imag.show()
上記ソースコードを実行すると画像が生成されます。ちゃんと♥も出力されています。
注意
上記ソースコードをpython2.7の環境で実行したら日本語が文字化けしてしまいました。encodingがasciiなのが原因な気もしますが、また改めて原因探ってみたいと思います。
ソースコード