【问题标题】:Building a tiff header in libtiff.net在 libtiff.net 中构建 tiff 标头
【发布时间】:2014-11-26 16:35:34
【问题描述】:

我正在读取 CG4(CALS Group IV 位图)文件并将图像数据提取为字节数组。图像数据使用 CCITT Group 4 (T.6) 压缩进行压缩。

我不相信 libtiff.net 有解压缩一组压缩字节的方法。有没有办法构建一个指定 CCITT Group 4 压缩的 tiff 标头,然后插入我现有的压缩图像数据,以生成有效的 tiff 文件?

【问题讨论】:

  • 最后一个仅供参考...CALS 图像的类型 2 和 JEDMICS 变体由图块(而不是条带)组成,需要与更简单的类型 1 文件不同的处理方式。
  • 谢谢,我知道类型 1 是一种更简单的格式。您知道任何公共类型 2 示例文件吗?
  • 这是我发现的唯一类型 2 样本:fileformat.info/format/cals/sample/index.htm 我在我的成像库中编写了对读取 JEDMICS C4 文件的支持,并希望添加 CALS 类型 2,但只有一个样本,我没有添加它。我从来没有发现有人真正使用过类型 2 文件。
  • 感谢您的链接。是的,样本很少,字节结构的详细信息也不够,我认为我们毕竟不会支持类型 2。

标签: c# tiff imaging libtiff.net


【解决方案1】:

这是一个示例,展示了如何从您的字节创建黑白 TIFF

using (Tiff output = Tiff.Open(fileName, "w"))
{
    output.SetField(TiffTag.IMAGEWIDTH, width);
    output.SetField(TiffTag.IMAGELENGTH, height);
    output.SetField(TiffTag.SAMPLESPERPIXEL, 1);
    output.SetField(TiffTag.BITSPERSAMPLE, 8);
    output.SetField(TiffTag.ORIENTATION, Orientation.TOPLEFT);
    output.SetField(TiffTag.ROWSPERSTRIP, height);
    output.SetField(TiffTag.XRESOLUTION, 88.0);
    output.SetField(TiffTag.YRESOLUTION, 88.0);
    output.SetField(TiffTag.RESOLUTIONUNIT, ResUnit.INCH);
    output.SetField(TiffTag.PLANARCONFIG, PlanarConfig.CONTIG);
    output.SetField(TiffTag.PHOTOMETRIC, Photometric.MINISBLACK);
    output.SetField(TiffTag.COMPRESSION, Compression.CCITTFAX4);
    output.SetField(TiffTag.FILLORDER, FillOrder.MSB2LSB);

    output.WriteRawStrip(0, compressedData, compressedData.Length);
}

请注意,您必须提供正确的宽度、高度、分辨率和其他值。 ROWSPERSTRIP 也必须是正确的。

【讨论】:

  • BITSPERSAMPLE 应设置为 1
  • 谢谢。在使用WriteScanLine之前我是如此接近,我没有看到WriteRawStrip方法。 @BitBank 也是正确的,因为 BITSPERSAMPLE 应该设置为 1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-02
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多