TIFFフォーマットは一つのファイルに複数の画像を保存できるマルチページTIFFをサポートしている。これはこれでなかなか便利であると思うが、それを表示させたり、利用したりするときに困ることがよくある。そこで、ここでは簡単にマルチページTIFF画像ファイルを分割してJPEGやPNGで保存する方法を以下に書いてみる。
まあ、普通に考えたらImageMagickのconvertコマンドで一発なんだけど、それだと面白くないので、ここではPython+PILを使った方法を使ってみる。因みに、ImageMagickでJPEGファイルを作成する場合は以下のように実行すれば良い。
convert file.tif file_%04d.jpg
次に、Python+PILのコードを以下に示す。
import sys, os, Image filename = sys.argv[1] im = Image.open(filename) try: count = 0 while 1: im.seek(count) im.save(os.path.splitext(filename)[0] + "_%04d" % count + ".jpg") count += 1 except EOFError: pass
これを適当なファイル名、たとえばsplit_tiff.pyとして保存して、
split_tiff.py file.tif
のように実行すれば良い。file_0000.jpg, file_0001.jpg, file_0002.jpg, ...のように連番で出力してくれる。簡単。因みにconvertもPythonコードも拡張子 .jpg を .png に変更すればPNG画像ファイルに変換してくれる。あと、デカイTIFFファイルを扱う場合、いったん全部読み込んで処理するconvertよりもPythonコードの方が速いみたい。
まあ、普通に考えたらImageMagickのconvertコマンドで一発なんだけど、それだと面白くないので、ここではPython+PILを使った方法を使ってみる。因みに、ImageMagickでJPEGファイルを作成する場合は以下のように実行すれば良い。
convert file.tif file_%04d.jpg
次に、Python+PILのコードを以下に示す。
import sys, os, Image filename = sys.argv[1] im = Image.open(filename) try: count = 0 while 1: im.seek(count) im.save(os.path.splitext(filename)[0] + "_%04d" % count + ".jpg") count += 1 except EOFError: pass
これを適当なファイル名、たとえばsplit_tiff.pyとして保存して、
split_tiff.py file.tif
のように実行すれば良い。file_0000.jpg, file_0001.jpg, file_0002.jpg, ...のように連番で出力してくれる。簡単。因みにconvertもPythonコードも拡張子 .jpg を .png に変更すればPNG画像ファイルに変換してくれる。あと、デカイTIFFファイルを扱う場合、いったん全部読み込んで処理するconvertよりもPythonコードの方が速いみたい。
コメント