libtiffのインストールと使い方

ライブ

 TIFFは画像形式の一つです。 画像データの形式はjpg,pngなどさまざまありますが、TIFFは保存を繰り返しても画質が劣化しないという特長があります。一方、ファイルサイズが大きくなるというデメリットもあります。 画像処理を施すような場合は画像が劣化すると困るのでTIFFを利用する利点は大きいでしょう。 また、TIFFにはヘッダがついており、ヘッダより画像の情報(縦、横、色調など)がわかります。 また、マルチTIFFといって一枚のTIFFに何枚もの画像を重ねることができます(動画みたいなかんじです)。 ここでは、TIFFをC言語で簡単に扱えるライブラリであるlibtiffのインストール方法を紹介します。 環境はMicrosoftのVisual C++です。

libtiffのダウンロード

libtiffは

>>LibTIFFの配布ページ

よりダウンロードできます。 「Master Download Site」横の「download.osgeo.org」をクリックします。

libtiffのダウンロード

そしたら様々なバージョンが出てきます。今回はこの中の「tiff-3.9.4.zip」を選びます。

tiff3-9-4をダウンロード

ダウンロード後に解凍すると「tiff-3.9.4」というディレクトリができます。 名前をlibtiffに変更して、C:\直下に移しましょう。

libtiffをインストールする

 次にlibtiffをコンパイルします。そこで、Visual Studio コマンドプロンプトを起動してください。

>>すべてのプログラム>>Microsoft Visual Studio 2008

のフォルダのどこかにあるはずです。(Visual C++によって場所はことなります。) 起動すると以下のようになります。

visualstudioコマンドプロンプトの起動

 次に実行するフォルダへ移ります。以下を入力してEnterを押します。 cd C:\libtiff すると、ディレクトリがlibtiffに移ります。そしたら、

nmake /f Makefile.vc

を実行します。そうすれば、C:\libtiff\libtiffに「libtiff.lib」や「libtiff.dll」が作成されます。 これで、Visual C++で使用する準備が整いました。

使い方

 使い方としては、まずVisual C++でプロジェクトを作成します。 そしたら、

#include "C:\libtiff\libtiff\tiff.h"
#include "C:\libtiff\libtiff\tiffio.h"

としてtiff.hとtiffio.hをインクルードします。次に、メニューから「プロジェクト>>○○○のプロパティ」を選択します。そしたら、「構成プロパティ>>リンカ>>入力」を選び、追加の依存ファイルに C:\\libtiff\\libtiff\\libtiff.lib を追加します。また、デバッグの場合は特定のライブラリの無視に「MSVCRT.lib」を追加します。さらに、 構成プロパティ>>全般 にある共通言語ランタイムサポートを「共通言語ランタイムサポート(/clr)」に変更します。

プログラム例

 ここでは例として、test.tifという画像を生成するプログラムを紹介します。 プロジェクトを立ちあげて、上記のように設定します。 そしたらプログラムの頭に

#include "C:\libtiff\libtiff\tiff.h"
#include "C:\libtiff\libtiff\tiffio.h"
#include "stdlib.h"

を書いてインクルードします(stdlib.hはメモリ処理malloc,freeで使います)。 あとは、実行する場所で(ボタンの動作場所など)以下のプログラムを書きます。

unsigned width=400;
unsigned height=400; 
char* buffer=(char *)malloc(width*height*sizeof(char)); 
for(unsigned i=0;i<width;i++){ 
    for(unsigned j=0;j<height;j++){ 
        buffer[j*width+i]=i%255; 
    } 
} 
TIFF *image; image=TIFFOpen("test.tif","w"); //test.tifというファイルをつくる
if(image==NULL){ 
    return; 
} 
//TIFFのタグ(補足情報)設定
TIFFSetField(image,TIFFTAG_IMAGEWIDTH,width); //画像幅
TIFFSetField(image,TIFFTAG_IMAGELENGTH,height); //画像の高さ
TIFFSetField(image,TIFFTAG_BITSPERSAMPLE,8); //画像の深さは8bit
TIFFSetField(image,TIFFTAG_SAMPLESPERPIXEL,1); //色の数は1
TIFFSetField(image,TIFFTAG_COMPRESSION,COMPRESSION_NONE);//圧縮なし 
TIFFSetField(image,TIFFTAG_PHOTOMETRIC,PHOTOMETRIC_MINISBLACK); //0が黒で、最大値が白
TIFFSetField(image,TIFFTAG_FILLORDER,FILLORDER_MSB2LSB); 
TIFFSetField(image,TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG); 
TIFFSetField(image,TIFFTAG_ORIENTATION,ORIENTATION_TOPLEFT); 
TIFFSetField(image,TIFFTAG_XRESOLUTION,72.0); //横方向解像度
TIFFSetField(image,TIFFTAG_YRESOLUTION,72.0); //高さ方向解像度
TIFFSetField(image,TIFFTAG_RESOLUTIONUNIT,RESUNIT_CENTIMETER);//解像度の単位はセンチメートル 
TIFFSetField(image,TIFFTAG_SOFTWARE,"SoftName"); //ソフトの名前
TIFFWriteEncodedStrip(image,0,buffer,width*height); 
TIFFClose(image); 
free(buffer);

これを実行するとtest.tifがプロジェクトのファイルに作成されます。 以下の様な画像が生成されるはずです。

生成されたTIFF画像

libtiffの詳しい使い方はまた今度紹介します。

著者:安井 真人(やすい まさと)