【问题标题】:.NET Multipage Tiff with Lossy Compression具有有损压缩的 .NET 多页 Tiff
【发布时间】:2010-05-31 20:52:25
【问题描述】:

我需要一种方法来获取多个 jpg 并将它们转换为单个多页 Tiff。我使用 GDI+ 进行工作,但它仅适用于无损压缩 LZW。这意味着我的 3 个 50KB Jpgs 变成了 3MB 多页 Tiff 文件。对于我正在开发的软件,这不是我可以接受的。

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

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

【问题讨论】:

    标签: c# .net tiff multipage lossy-compression


    【解决方案1】:

    BitMiracle LibTiff.net 支持 JPG(以及可能所有其他 Tiff 编解码器)以及多页 tiff。尽管与其他编解码器结合使用,但我已经使用过它,并且对它有很好的体验;它也经过了很好的测试(包括单元测试)。在 LGPL 下可用。支持也很好(最近发现文件>2GB的问题我快速响应并更新代码)

    希望这对您有所帮助。抱歉,我不禁对这个组件充满热情,因为它对我有很大帮助,而且是免费的。

    【讨论】:

    • 从 2.0 版开始,LibTiff.Net 在 BSD 许可下可免费用于所有用途。
    • 经过大量艰苦的工作,设法使用这个库 (BitMiracle LibTiff.Net),结果它比需要的还要好 - 为我保存了所需文件大小的一半的彩色分页 tiff。跨度>
    【解决方案2】:

    我为 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 压缩级别?
    • enc.JpegQuality = someIntegerFrom0to100;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 2014-09-28
    相关资源
    最近更新 更多