我在使用 LibTIFF 库保存图像时遇到问题。
在我的代码中,我有一个浮点数组,表示图像的像素值。当我将这些值保存到 RAW 文件时,它看起来很好。但是,当我尝试使用 LibTIFF 库将其保存为 TIFF 文件时,当我在 ImageJ 中打开它时,图像看起来非常好,但是当我在 Photoshop 或 Windows 中打开它时,它看起来很奇怪(如下所示),并且 Gimp 显示一个完全透明的图像(就像图像中根本没有数据一样)。
我使用 ImageJ 打开 RAW 文件,图像类型设置为 32bit - Real 和 Little-endian 字节顺序被勾选。
这是我用来保存 TIFF 图像的代码:
TIFF *tif= TIFFOpen(name, "w");
TIFFSetField (tif, TIFFTAG_IMAGEWIDTH, width);
TIFFSetField (tif, TIFFTAG_IMAGELENGTH, height);
TIFFSetField (tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
TIFFSetField (tif, TIFFTAG_SAMPLESPERPIXEL, 1);
TIFFSetField (tif, TIFFTAG_ROWSPERSTRIP, 1);
TIFFSetField (tif, TIFFTAG_COMPRESSION, COMPRESSION_NONE);
TIFFSetField (tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
TIFFSetField (tif, TIFFTAG_BITSPERSAMPLE, 32);
TIFFSetField (tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
tsize_t strip_size = TIFFStripSize (tif);
tstrip_t strips_num = TIFFNumberOfStrips (tif);
float* strip_buf=(float*)_TIFFmalloc(strip_size);
for (unsigned int s=0; s<strips_num; s++) {
for (unsigned int col=0; col<width; col++) {
strip_buf[col]=image[s][col];
}
TIFFWriteEncodedStrip (tif, s, strip_buf, strip_size);
}
_TIFFfree(strip_buf);
TIFFClose(tif);
我很确定我保存文件的方式有问题 - 但我不知道是什么。非常感谢你的帮助!