在LibTIFF文档中,没有提及或如何读取16位RGB图像的示例。显然,读取16位需要使用扫描线功能。经过几次尝试后,我无法解决这个问题。
根据this post,
如果您想要处理所有类型的TIFF图像而不使用 TIFFReadRGBAImage然后你必须检测图像格式并使用 低级接口,如TIFFReadEncodedStrip和 TIFFReadEncodedTile
我的最终目标是能够获得R,G和B通道的16位值,以及实际知道它们在图像中的位置。
在libtiff的文档中,他们使用条带编码为eading提供了此示例代码,但是,它们没有解释您获得的buf
中的内容或如何使用它。任何人都可以解释我应该从那里读取16位值吗?另外,有没有办法一致地确定条带顺序,以便我的读取图像呈现正确?
TIFF* tif = TIFFOpen("myfile.tif", "r");
if (tif) {
tdata_t buf;
tstrip_t strip;
buf = _TIFFmalloc(TIFFStripSize(tif));
for (strip = 0; strip < TIFFNumberOfStrips(tif); strip++)
TIFFReadEncodedStrip(tif, strip, buf, (tsize_t) -1);
_TIFFfree(buf);
TIFFClose(tif);
}