LoginSignup
2
1

More than 5 years have passed since last update.

この記事は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()

上記ソースコードを実行すると画像が生成されます。ちゃんと♥も出力されています。

tmp0pf9y1jc.png

注意

上記ソースコードをpython2.7の環境で実行したら日本語が文字化けしてしまいました。encodingがasciiなのが原因な気もしますが、また改めて原因探ってみたいと思います。
tmp62KK4k.png

ソースコード

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1