これまで自作の関数でMulti TIFFファイルを書いたり、読んだりしていたのですが、libtiffライブラリを使ってみることにしました。
私が使うデータは主に8bit、16bitのグレースケールです。
まずはTIFFのプログラムを作る環境構築から。
JPEG、Zlibライブラリは使わないのでインストールしません。
実際のプログラムは他の記事に掲載しています。
カテゴリで「libtiff」を選択すると表示されます。
環境1
- Debian lenny 32bit
- gcc version 4.4.5 (Debian 4.4.5-8)
- libtiff4-dev ver.3.9.4-5+squeeze3
環境2
- WindowsXP Pro SP3 32bit
- Microsoft Visual C++ 2008 SP2
- Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80×86
- Microsoft Visual C++ 2010 SP1
- Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80×86
- libtiff ver.3.9.4
- libtiff ver.3.9.6
- libtiff ver.4.0.1
他のページにあるlibtiffのサンプルについて
プログラムと同じディレクトリにinclude、lib、dllの各ファイルを置いていると仮定している。
下記のインストール手順では、汎用性のためにinclude、lib、dllの各ディレクトリに分けてコピーしている。
なお、ディレクトリ毎に分けた場合は、include、lib、dllの場所にパスを通しておくと良い。
インストール(環境1)
aptitude install libtiff4-dev
インストール(環境2)
「Visual Studio 2008 コマンドプロンプト」を起動して行います。
libtiffホームページから安定版をダウンロード、解凍してコンパイルします。
圧縮を使わないので、何もいじりません。
「libtiff ver.4」の場合も同様に行います。
Releaseの場合
cd .\tiff-3.9.6 nmake /f makefile.vc copy .\tiff-3.9.6\libtiff\*.h D:\libtiff396\include copy .\tiff-3.9.6\libtiff\libtiff.lib D:\libtiff396\lib copy .\tiff-3.9.6\libtiff\libtiff_i.lib D:\libtiff396\lib
DLLを使う場合はmanifestを埋め込んでおくと便利。
なお、DLLを使う場合は、「libtiff_i.lib」をリンクする。
また、プログラムと同じディレクトリに置くか、DLLを置いた場所にパスを通しておく。
cd .\tiff-3.9.6\libtiff mt -manifest libtiff.dll.manifest -outputresource:libtiff.dll;2 copy .\libtiff.dll D:\libtiff396\dll
Debugの場合
・「.\tiff-3.9.6\nmake.opt」の「OPTFLAGS」にある「/MD」を「/MDd」に修正する。
・Releaseの「libtiff.lib」と区別するために「.\tiff-3.9.6\nmake.opt」の「DLLNAME」にある「libtiff.dll」を「libtiffd.dll」に修正する。
OPTFLAGS = /Ox /MDd /EHsc /W3 /D_CRT_SECURE_NO_DEPRECATE
cd .\tiff-3.9.6 nmake /f makefile.vc copy .\tiff-3.9.6\libtiff\*.h D:\libtiff396\include copy .\tiff-3.9.6\libtiff\libtiff.lib D:\libtiff396\lib\libtiffd.lib copy .\tiff-3.9.6\libtiff\libtiff_i.lib D:\libtiff396\lib\libtiffd_i.lib
DLLを使う場合はmanifestを埋め込んでおくと便利。
なお、DLLを使う場合は、「libtiffd_i.lib」をリンクする。
また、プログラムと同じディレクトリに置くか、DLLを置いた場所にパスを通しておく。
cd .\tiff-3.9.6\libtiff mt -manifest libtiffd.dll.manifest -outputresource:libtiffd.dll;2 copy .\libtiffd.dll D:\libtiff396\dll
コンパイル(環境1)
gcc -Wall -ltiff -o hoge hoge.c
コンパイル(環境2)
「Visual Studio 20xx コマンドプロンプト」を起動して行う。
cl -Wall -o hoge hoge.cpp
manifestなしで動かす。
mt -manifest hoge.exe.manifest -outputresource:hoge.exe;1
wikipedia

libtiff
マニフェストをC/C++アプリケーションに埋め込む
MultiTIFFのソース1
C#とVB.NETが掲載されている。
その他にも色々サンプルが掲載されている。
C#からC言語への書き直しは簡単なので大変参考になる。
http://bitmiracle.com/libtiff/help/create-multipage-tiff.aspx
Comments