我如何知道 TIFF 图像的格式是否为 CCITT T.6(第 4 组)?
4 回答
您可以使用此 (C#) 代码示例。它返回一个指示压缩类型的值:
1:无压缩
2:CCITT Group 3
3:传真兼容 CCITT Group 3
4:CCITT Group 4 (T.6)
5:LZW
public static int GetCompressionType(Image image)
{
int compressionTagIndex = Array.IndexOf(image.PropertyIdList, 0x103);
PropertyItem compressionTag = image.PropertyItems[compressionTagIndex];
return BitConverter.ToInt16(compressionTag.Value, 0);
}
您可以查看这些链接
标签 259(十六进制 0x0103)存储有关压缩方法的信息。
--- 压缩标签 = 259 (103) 类型 = 字 N = 1 默认值 = 1。
1 = 不压缩,但将数据尽可能紧密地打包成字节,除了行尾之外没有未使用的位。字节存储为字节数组,对于 BitsPerSample <= 8,如果 BitsPerSample > 8 且 <= 16,则为 word,如果 BitsPerSample > 16 且 <= 32,则为 dword。数据 >8 位的字节顺序必须与在 TIFF 文件头(字节 0 和 1)中指定。行需要从字节边界开始。
2 = CCITT Group 3 1-Dimensional Modified Huffman run length encoding。请参阅 ALGRTHMS.txt BitsPerSample 必须为 1,因为这种类型的压缩仅针对双层图像(如传真图像...)定义
3 = 与传真兼容的 CCITT 第 3 组,完全符合“文件传输第 3 组传真设备的标准化”建议 T.4,第 VII 卷,Fascicle VII.3,远程信息处理服务的终端设备和协议,国际电报和电话咨询委员会 (CCITT),日内瓦,1985,第 16 至 31 页。每个条带必须从一个字节边界开始。(但请记住,图像可以是单个条带。)不是条带第一行的行不需要从字节边界开始。数据存储为字节,而不是字 - 不允许字节反转。请参阅 Group3Options 字段以了解第 3 组选项,例如 1D 与 2D 编码。
4 = 与传真兼容的 CCITT 组 4,完全符合“第 4 组传真设备的传真编码方案和编码控制功能”建议 T.6,第 VII 卷,Fascicle VII.3,远程信息处理服务的终端设备和协议,The国际电报电话咨询委员会 (CCITT),日内瓦,1985,第 40 至 48 页。每个条带必须以字节边界开始。不是条带第一行的行不需要从字节边界开始。数据存储为字节,而不是字。请参阅 Group4Options 字段以了解第 4 组选项。
5 = LZW 压缩,用于灰度、映射颜色和全彩色图像。
您可以identify -verbose
从图像上的ImageMagick套件运行。在输出中查找“压缩:Group4”。
更新:
所以,我从我之前提到的链接下载了libtiff
库,从我所见,你可以执行以下操作:(未经测试)
int isTIFF_T6(const char* filename)
{
TIFF* tif= TIFFOpen(filename,"r");
TIFFDirectory *td = &tif->tif_dir;
if(td->td_compression == COMPRESSION_CCITTFAX4) return 1;
return 0;
}
上一个: 这个页面有很多关于这种格式的信息,并链接到 C 中的一些代码:
这是一段摘录:
以下文件涵盖 T.4、T.6 和 JBIG:
“传真系统电子成像标准回顾”,电子成像杂志,卷。1,第 1 期,第 5-21 页,1992 年 1 月。
源代码可以作为 TIFF 工具包的一部分获得 - 二进制图像的 TIFF 图像压缩技术包括 CCITT T.4 和 T.6:
ftp://ftp.sgi.com/graphics/tiff/tiff-v3.4beta035-tar.gz 联系方式:sam@engr.sgi.com
阅读更多: http: //www.faqs.org/faqs/compression-faq/part1/section-16.html#ixzz0TYLGKnHI