同様のトピックに関する情報を追加したかっただけです。最終的に、最新 (4.0.3) のソースから libTiff をビルドするだけになりました。私のプロジェクトはすべて x64 ですが、とても簡単でした。
- libTIFF ソースをダウンロードして解凍する
- x64(またはx32)コマンドのVS2010(または何でも)を開きます
- 手順 1 で解凍したフォルダーに cd します。
- タイプ: nmake /f makefile.vc
- /libtiff フォルダーからファイルを取得し、プロジェクトに追加します。
16 ビット TIFF データを読み取る例を次に示します。
TIFF *MultiPageTiff = TIFFOpen("C:\\MultiPageTiff.tif", "r");
std::vector<unsigned short*> SimulatedQueue;
//Read First TIFF to setup the Buffers and init
//everything
int Width, Height;
//Bit depth, in bits
unsigned short depth;
TIFFGetField(MultiPageTiff, TIFFTAG_IMAGEWIDTH, &Width);
TIFFGetField(MultiPageTiff, TIFFTAG_IMAGELENGTH, &Height);
TIFFGetField(MultiPageTiff, TIFFTAG_BITSPERSAMPLE, &depth);
//This should be Width*(depth / sizeof(char))
tsize_t ScanlineSizeBytes = TIFFScanlineSize(MultiPageTiff);
if(MultiPageTiff){
int dircount = 0;
do{
dircount++;
//I'm going to be QQueue'ing these up, so a buffer needs to be
//allocated per new TIFF page
unsigned short *Buffer = new unsigned short[Width*Height];
//Copy all the scan lines
for(int Row = 0; Row < Height; Row++){
TIFFReadScanline(MultiPageTiff, &Buffer[Row*Width], Row, 0);
}
SimulatedQueue.push_back(Buffer);
}while(TIFFReadDirectory(MultiPageTiff));
TIFFClose(MultiPageTiff);
}
ソース: VS からの libTIFF のビルド - http://www.remotesensing.org/libtiff/build.html#PC
マルチページTIFF の例 - http://www.remotesensing.org/libtiff/libtiff.html
その他 Tiff マニュアル - http://www.remotesensing.org/libtiff/man/