我试图让 libtiff 使用TIFFReadScanline(tif, buf, row)方法读取由一条大约 500x500 32 位像素组成的 tiff 文件。这给了我 tdata_t (??) 行。
如何将此缓冲区写为文本文件或访问像素值(应该是双精度值)?
我的代码如下所示:
TIFF* tif = TIFFOpen(c_str2, "r");
uint32 imagelength;
tdata_t buf;
uint32 row;
TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imagelength);
buf = _TIFFmalloc(TIFFScanlineSize(tif));
for (row = 0; row < imagelength; row++){
TIFFReadScanline(tif, buf, row);
myfile << buf << endl;
}
在最后一行中,我尝试将整个缓冲区写出到一个文本文件中,但是没有双精度值,只有十六进制值。当我用 char 缓冲区替换 tdata_t 缓冲区时,会出现 ASCII 符号乱码。我想我应该将 tdata_t 缓冲区转换为 double 或 char 缓冲区,但如何?
它不应该是字节顺序,因为我认为 libtiff 会自动处理它。
欢迎任何建议!谢谢帮忙,祝大家周末愉快!