search
LoginSignup
1
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

アスキーアート総合 Advent Calendar 2018 Day 13

posted at

AAを画像に変換する(Python編)

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

ソースコード

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
What you can do with signing up
1
Help us understand the problem. What are the problem?