我正在尝试使用LibTIFF编写10、12位RGB TIFF文件。
像素数据以本地的unsigned short
缓冲区(16位)的形式保存。
1) 如果我将TIFFTAG_BITSPERSAMPLE
设置为10或12,就无法从缓冲区中读取足够的比特数,并且输出结果不正确。(我理解这只是每个分量读取了10或12个比特而不是16个,这就是问题所在)
2) 我尝试对缓冲区中的比特进行打包,使其真正成为12-R、12-G、12-B。在这种情况下,我认为文件被正确地写入了,但我找到的所有查看器都无法正确显示该图像。
3) 如果我将TIFFTAG_BITSPERSAMPLE
设置为16,则查看器可以显示TIFF图像,但我不知道图像最初是10位还是12位(如果我稍后要用LibTIFF读取它)。此外,查看器期望动态范围为16位而不是10或12位,也会导致视图不佳。
4) 最让人烦恼的部分是,我在网络上找不到一个10、12或14位的TIFF图像,以查看头文件应该是什么样子。
那么,正确的方法是什么,可以将10或12位图像数据写入TIFF文件?