画像処理入門 > TIFFファイルの読み書き > 48bit TIFF画像保存

48bit TIFF画像保存


48bit TIFF画像保存
LibTIFFを使用して、48bit TIFF画像を保存するプログラムです。

サンプルプログラム
#include <stdio.h> #include <stdlib.h> #include <math.h> #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; }