Python PIL(Python Image Library)でtifとbmpの比較(失敗)
ちょっとした事情があり、C++でtif画像をbmpに変換する
dllを作成しました。
このdllが上手く動いているか確認するため、元のtif画像と
変換後のbmp画像を比較するテストアプリケーションを
pythonで書いてみようと思います。
画像の操作はPIL(Python Image Library)で行うことにしました。
PILはeasy_installでインストールできます。
#easy_install PIL
------------------------------------------------------------
Searching for PIL
Reading http://pypi.python.org/simple/PIL/
Reading http://www.pythonware.com/products/pil
Reading http://effbot.org/zone/pil-changes-115.htm
Reading http://effbot.org/downloads/#Imaging
Best match: PIL 1.1.6
Downloading http://effbot.org/downloads/PIL-1.1.6.win32-py2.4.exe
Processing PIL-1.1.6.win32-py2.4.exe
...
Installed c:\python24\lib\site-packages\pil-1.1.6-py2.4-win32.egg
Processing dependencies for PIL
Finished processing dependencies for PIL
------------------------------------------------------------
import Image
としてエラーが出なければOK
早速、tifとbmpの内容を比較するプログラムを作成します。
import Image
#イメージロード
tif = Image.open('test.tif')
bmp = Image.open('test.bmp')
#size(width, height)
#サイズチェック
if tif.size != bmp.size:
print 'サイズが異なります。'
動いてくれました。
いい調子です。
#各ピクセルの内容が同一かチェック
for h in xrange(tif.size[0]):
for w in xrange(tif.size[1]):
if tif.getpixel((h,w)) != bmp.getpixel((h,w)):
print '内容が異なります。'
早速実行すると・・・
raise IOError("decoder %s not available" % decoder_name)
IOError: decoder group4 not available
えっ?こんなオチがあったとは・・・
tifのgroup4形式のデコーダがない模様。
デコーダを入れる方法を調べましたがよくわからず、断念です。
しょうがないので、Javaで比較ツールを作成してみます。
もどる