C# 带有有损压缩的.NET多页Tiff

C# 带有有损压缩的.NET多页Tiff,c#,.net,tiff,multipage,lossy-compression,C#,.net,Tiff,Multipage,Lossy Compression,我需要一种方法来采取几个JPG和转换成一个单一的多页Tiff他们。我使用GDI+工作,但它只适用于无损压缩LZW。这意味着我的3个50KB JPG将变成3MB多页Tiff文件。对于我正在开发的软件,这是我无法接受的 我知道Tiff图像格式可以使用JPG压缩方案,但GDI+似乎不支持这一点 如果有人知道如何在.NET(C#)或任何进行此转换的组件中执行此操作。支持JPG(以及可能的所有其他Tiff编解码器)以及多页Tiff。我使用过它,虽然与其他编解码器结合使用,并且有很好的使用经验;它也经过很好

我需要一种方法来采取几个JPG和转换成一个单一的多页Tiff他们。我使用GDI+工作,但它只适用于无损压缩LZW。这意味着我的3个50KB JPG将变成3MB多页Tiff文件。对于我正在开发的软件,这是我无法接受的

我知道Tiff图像格式可以使用JPG压缩方案,但GDI+似乎不支持这一点

如果有人知道如何在.NET(C#)或任何进行此转换的组件中执行此操作。

支持JPG(以及可能的所有其他Tiff编解码器)以及多页Tiff。我使用过它,虽然与其他编解码器结合使用,并且有很好的使用经验;它也经过很好的测试(包括单元测试)。可在LGPL下获得。支持也非常好(最近在文件>2GB和我的快速响应和更新代码中发现了一个问题)

希望这对你有帮助。抱歉,我忍不住对该组件充满热情,因为它对我帮助很大,而且是免费的。

我为之工作,我们有.NET工具可以轻松完成这项工作

public void CombineIntoTiff(string outputTiff, params string[] inputFiles)
{
    using (FileStream stm = new FileStream(outputTiff, FileMode.Create)) {
        TiffEncoder enc = new TiffEncoder();
        enc.Compression = TiffCompression.JpegCompression;
        enc.Append = true;
        foreach (string file in inputFiles) {
            AtalaImage image = null;
            try { image = new AtalaImage(file); } catch { continue; }
            enc.Save(image);
        }
    }
}

需要注意的一点是,TIFF中有两种JPEG压缩格式,一种是标准认可的,另一种是公认的/勉强容忍的。后者被称为旧式JPEG,被固定在TIFF上,是TIFF中比任何其他压缩都多的文件损坏的原因。上述代码将使用符合标准的JPEG压缩。

从2.0版开始,LibTiff.Net可在BSD许可证下免费用于所有用途。经过大量的艰苦工作,终于能够使用此库(bittiff.Net)事实证明,它甚至比所需的更好—将彩色页面tiff保存为所需文件大小的一半;