画像処理入門 >
TIFFファイルの読み書き >
48bit TIFF画像保存
48bit TIFF画像保存
48bit TIFF画像保存
LibTIFFを使用して、48bit TIFF画像を保存するプログラムです。
サンプルプログラム
#include
#include
#include
#include "./include/tiffio.h"
#pragma comment (lib, "lib/libtiff.lib")
typedef struct{
TIFF *info;
void *data;
uint32 tiffsize;
int width;
int height;
uint16 samplesperpixel;
uint16 bitspersample;
uint16 photometric;
uint16 fillorder;
uint16 compression;
uint16 orientation;
uint16 resunit;
uint16 planarconfig;
} TIFF_DATA;
bool tiffWrite48(TIFF_DATA *tiffData, char *fname){
TIFF *tiff;
tiff = TIFFOpen(fname, "w");
if(tiff == NULL){
printf("ファイルを開けません\n");
return false;
}
// Tagを設定
TIFFSetField(tiff, TIFFTAG_IMAGEWIDTH, tiffData->width);
TIFFSetField(tiff, TIFFTAG_IMAGELENGTH, tiffData->height);
TIFFSetField(tiff, TIFFTAG_BITSPERSAMPLE, tiffData->bitspersample);
TIFFSetField(tiff, TIFFTAG_SAMPLESPERPIXEL, tiffData->samplesperpixel);
TIFFSetField(tiff, TIFFTAG_COMPRESSION, tiffData->compression);
TIFFSetField(tiff, TIFFTAG_PHOTOMETRIC, tiffData->photometric);
TIFFSetField(tiff, TIFFTAG_FILLORDER, tiffData->fillorder);
TIFFSetField(tiff, TIFFTAG_PLANARCONFIG, tiffData->planarconfig);
TIFFSetField(tiff, TIFFTAG_ORIENTATION, tiffData->orientation);
TIFFSetField(tiff, TIFFTAG_XRESOLUTION, 72.0);
TIFFSetField(tiff, TIFFTAG_YRESOLUTION, 72.0);
TIFFSetField(tiff, TIFFTAG_RESOLUTIONUNIT, RESUNIT_CENTIMETER);
TIFFSetField(tiff, TIFFTAG_SOFTWARE, "LibTiff"); // 出力したソフトウェア
TIFFWriteEncodedStrip(tiff, 0, tiffData->data, tiffData->width * tiffData->height * (tiffData->bitspersample / 8) * tiffData->samplesperpixel);
// 解放処理
TIFFClose( tiff );
return true;
}