Python Imaging Library, FreeType のインストール
PIL
前回のエントリ
(Python Image Library(PIL)の使い方 - I/O Error : My Knowledge)では
import Image
としていましたが、きちんとしたPILのインストールを行ったのでメモ。
ダウンロード
まずはPILの公式サイト(Python Imaging Library (PIL))から
ソースをダウンロードしてきます。
現在のバージョンは1.1.7なので、最新版を手に入れます。
~/Download に保存しました。
インストール
cd ~/Download gunzip Imaging-1.1.7.tar.gz tar xvf Imaging-1.1.7.tar cd Imaging-1.1.7 python setup.py install
とやればOK.
使い方
>>> from PIL import Image, ImageDraw
これで前回と同じImageモジュールと、描画用のImageDrawモジュールを
利用出来るようになります。
線やテキストを書き込む
>>> from PIL import Image, ImageDraw, ImageFont >>> img = Image.new('RGB', (1000, 1000), (255,255,255)) >>> # 1000*1000の白い画像 >>> draw = ImageDraw.Draw(img) >>> draw.line((20, 500, 800, 80), fill=(255, 0, 0)) >>> # (20, 500)から(800, 80)への赤い直線 >>> draw.text((40, 80), 'hello', (0, 0, 0)) >>> # (40, 80)に黒字でhelloを書く. >>> img.show()
といった形で使える.
ImageDraw.ImageDraw.text
上で書いた
draw.text
はフォントサイズを指定できるのだがそれがややこしい.
詳しく見てみると,
In [1]: from PIL import ImageDraw In [2]: ImageDraw.ImageDraw.text? Type: instancemethod Base Class: <type 'instancemethod'> String Form:<unbound method ImageDraw.text> Namespace: Interactive File: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL/ImageDraw.py Definition: ImageDraw.ImageDraw.text(self, xy, text, fill=None, font=None, anchor=None) Docstring: <no docstring>
とあるように,引数にfontを指定できるようになっている.
ImageFont
from PIL import ImageFont
でフォント関係のモジュールを用意する.
そして,
font=ImageFont.truetype(filename='/System/Library/Fonts/Monaco.dfont', size=200)
としてフォント(Monaco.dfontは適当)を用意して,
draw.text((50,50),"hello",font=font,fill=(0,0,0))
これでフォントサイズ200でhelloが書けた.
Freetypeのインストール
PILをインストールしただけでfontを設定しようとすると,
ImportError: The _imagingft C module is not installed
と怒られることがある.
_imagingft,ってなんやねんとなるけど何とかなりました.
freetypeというものが必要だそうです.
まずはThe FreeType Project - Browse /freetype2 at SourceForge.netに行って
最新鋭のfreetype-2.4.6.tar.bz2をダウンロードする.
ここでは同じく~/Downloadに保存.
cd ~/Download gunzip freetype-2.4.6.tar.bz2 tar xvf freetype-2.4.6.tar cd freetype-2.4.6/ ./configure make make install
これでfreetypeのインストールが完了,ではない.
次に,
cd ~/Download/Imaging-1.1.7/ python setup.py build sudo python setup.py install
これで晴れてfontを弄れるようになりました.
長かった.
参考
In [1]: from PIL import Image, ImageDraw, ImageFont In [2]: img = Image.new('RGB', (1000, 1000), (255, 255, 255)) In [3]: draw = ImageDraw.Draw(img) In [4]: font=ImageFont.truetype(filename='/System/Library/Fonts/Monaco.dfont', size=200) In [5]: draw.line((20, 500, 800, 80), fill=(255, 0, 0)) In [6]: draw.line((200, 10, 90, 800), fill=(255, 0, 255)) In [7]: draw.text((50,50),"hello",font=font,fill=(0,0,0)) In [8]: draw.text((100,500),"World",font=font,fill=(0,255,0)) In [9]: img.show() In[10]: img.save("sample.jpg", "JPEG")