我正在尝试让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;
}
在最后一行中,我尝试将整个缓冲区写入文本文件,但没有双值但是Hex-Values。当我用char缓冲区替换tdata_t缓冲区时,有ASCII符号乱码。我想我应该将tdata_t缓冲区转换为double或char缓冲区但是如何?
它不应该是字节顺序,因为我认为libtiff会自动处理这个。
欢迎任何建议!感谢您的帮助,祝您周末愉快!
答案 0 :(得分:1)
&lt;&lt;注意到你输出的tdata_t类型可能是整数,并将它们放入十六进制以便于阅读。
只需遍历行中的所有元素(在buf中)并将其作为浮点数输出,其中&lt;&lt; (浮点)的buf [元件]