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で比較ツールを作成してみます。



もどる