使用有损压缩的.NET多页Tiff

3
我需要一种将多个jpg文件转换为单个多页Tiff文件的方法,目前我已经使用了GDI+完成了这个任务。但是GDI+只支持无损压缩方式LZW。这意味着我的3个50KB的jpg文件会转换成3MB的多页Tiff文件。这对于我正在开发的软件来说是无法接受的。
我知道Tiff图像格式可以使用JPG压缩方案,但是GDI+好像不支持这种方式。
如果有人知道如何在.NET(C#)中实现此操作或者有任何能够进行此转换的组件,请告诉我。
2个回答

3
BitMiracle LibTiff.net支持JPG(以及可能所有其他Tiff编解码器)和多页Tiff。我曾经使用过它,虽然与其他编解码器结合使用,但效果非常好;它也经过了很好的测试(包括单元测试)。可在LGPL下使用。支持也非常好(最近发现一个文件>2GB的问题,我迅速得到了回应并更新了代码)。
希望这能帮助您。很抱歉,我对这个组件感到热情,因为它帮助了我很多,并且是免费的。

1
从2.0版本开始,LibTiff.Net在BSD许可下免费提供给所有用户使用。 - Bobrovsky
1
经过许多辛勤的工作,我成功地使用了这个库(BitMiracle LibTiff.Net),结果比我需要的还要好 - 以一半的文件大小为我保存了彩色分页的tiff。 - shahar eldad

1
我在Atalasoft工作,我们有.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压缩方式。

你如何使用它来调整Jpeg压缩级别? - Moon
enc.JpegQuality = 从0到100的某个整数; - plinth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接