我试图以TIFF格式保存相同图像的堆栈但是当我用ImageJ这样的应用程序打开图像时,我只能查看第一个图像;第二张和第三张图像无法显示 . 我相信TIFF图像包含第二和第三图像的图像数据,因为尺寸是单个tiff图像的3倍 .
我使用了以下代码,但没有运气 .
int NPAGES = 3;
for (int page = 0; page < NPAGES; page++) {
TIFFSetField(out, TIFFTAG_IMAGEWIDTH, frame->Width);
TIFFSetField(out, TIFFTAG_IMAGELENGTH, frame->Height);
TIFFSetField(out, TIFFTAG_SAMPLESPERPIXEL, 1);
TIFFSetField(out, TIFFTAG_BITSPERSAMPLE, 16);
TIFFSetField(out, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
TIFFSetField(out, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
TIFFSetField(out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
TIFFSetField(out, TIFFTAG_MAXSAMPLEVALUE, (1 << frame->BitDepth) - 1);
/// added
TIFFSetField(out, TIFFTAG_SUBFILETYPE, FILETYPE_PAGE);
TIFFSetField(out, TIFFTAG_PAGENUMBER, page, NPAGES);
TIFFWriteRawStrip(out, 0, (void*)image, frame->RawImageData->Length * 2);
}
有人可以帮帮我吗 ?
1 回答
函数TIFFWriteDirectory关闭目录(页面)并启动一个新目录 . 在循环结束时调用此函数,因此每次迭代都以一个新目录开始 . 您无需显式设置页码 .