Xcodeでlibtiffを使う方法

 libtiffはTIFFの読み込みや出力を行うC言語のライブラリです。マックのプログラミング言語もC言語が基盤となっているため、Xcodeでlibtiffを利用することが可能です。ここでは、Xcodeでlibtiffを使いたいという人のために導入方法を紹介します。

libtiffをインストールする

 まずはじめにlibtiffをインストールする必要があります。そのために、以下のページからlibtiffをダウンロードしましょう。

LibTIFF – TIFF Library and Utilities

このページの「download.osgeo.org」をクリックしてダウンロードページに飛びます。

Libtiffのダウンロードページへ

そして、最新バージョンのlibtiffをダウンロードします。ここでは、「ver4.0.3」をダウンロードしました。

libtiffのダウンロード

 

ダウンロードが完了したら、解凍しましょう。解凍して出てきたフォルダは適当な位置に置いておき、パスを確認しておきましょう。(ここではデスクトップにフォルダを置きました。)

 続いて、libtiffをインストールします。そのために、ターミナルを開きます。

ターミナル

cd [libtiffフォルダのパス]

によりダウンロードしたlibtiffフォルダへディレクトリを移動します。

ディレクトリの移動

あとは、以下の手順でコマンドをうっていきましょう。(./configureからコマンドをうちます)

cd [libtiffフォルダのパス]
./configure
make
make check
make install

コマンドをうつたびにターミナルに多くのメッセージが表示されます。以上でlibtiffのインストールが完了です。「/opt/local/include/」にtiff.hやtiffio.hのヘッダが入っているはずです。確認しましょう(Finderの移動->フォルダへ移動で/opt/local/include/で移動できます)。また、「/opt/local/lib/」にlibtiff.dylibがあるので確認しましょう。

libtiffをXcodeで使ってみる

ではXcodeでさっそくlibtiffを使用してみましょう。Xcodeを起動させてコンソールアプリケーションのプロジェクトを作成してください。プロジェクト名は適当につけてください。

OpenCVを使ってみる

 まず、includeの設定をします。以下のように「Build Settings->Search Paths->Header Search Paths」に「/opt/local/include」を指定します。この指定により、「/opt/local/include」といちいちinclude宣言をする際に書かなくてすみます。

includeの設定

 

あとはコードmain.cに

#include <stdio.h>
#include "stdlib.h" //追加
#include "tiff.h"    //追加
#include "tiffio.h" //追加

を追加しましょう。あとでmallocやfreeといったメモリ処理を使用するのでついでにstdlib.hもインクルードしています。これでlibtiffのインクルードは完了です。

 続いて、libtiffをリンクします。「Build Phases->Link Binary With Libraries」のプラスをクリックして「/opt/local/lib/」にあるlibtiff.dylibを追加します(「Add Other…」より直接選択しましょう)。

libtiffのリンク

 

以上でリンクが完了です。

 では、最後にTIFFをつくって保存するプログラムを作っておわります。以下のようにコードしましょう。

#include <stdio.h>
#include "stdlib.h"
#include "tiff.h"
#include "tiffio.h"

int main(int argc, const char * argv[])
{    
    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("/Users/XXXXXX/Desktop/test.tif","w"); //test.tifというファイルをつくる
    if(image==NULL){
        return 0;
    }
    //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);
    return 0;
}

17行目のパスは自分のPCに合うように「XXXXXX」を変更してください。

プログラムを実行すると以下のうようなTIFFファイルをが作成されます。

TIFF

 

解説は以上です。お疲れ様でした。

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