我需要一种方法来获取多个 jpg 并将它们转换为单个多页 Tiff。我使用 GDI+ 进行工作,但它仅适用于无损压缩 LZW。这意味着我的 3 个 50KB Jpgs 变成了 3MB 多页 Tiff 文件。对于我正在开发的软件,这不是我可以接受的。
我知道 Tiff 图像格式可以使用 JPG 压缩方案,但 GDI+ 似乎不支持这一点。
如果有人知道如何在 .NET (C#) 或任何进行此转换的组件中执行此操作。
我需要一种方法来获取多个 jpg 并将它们转换为单个多页 Tiff。我使用 GDI+ 进行工作,但它仅适用于无损压缩 LZW。这意味着我的 3 个 50KB Jpgs 变成了 3MB 多页 Tiff 文件。对于我正在开发的软件,这不是我可以接受的。
我知道 Tiff 图像格式可以使用 JPG 压缩方案,但 GDI+ 似乎不支持这一点。
如果有人知道如何在 .NET (C#) 或任何进行此转换的组件中执行此操作。
BitMiracle LibTiff.net支持 JPG(以及可能所有其他 Tiff 编解码器)以及多页 tiff。尽管与其他编解码器结合使用,但我已经使用过它,并且使用它有很好的经验;它也经过了很好的测试(包括单元测试)。在 LGPL 下可用。支持也很好(最近发现文件>2GB的问题我快速响应并更新代码)
希望这对您有所帮助。抱歉,我不禁对这个组件充满热情,因为它对我有很大帮助并且是免费的。
我为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 压缩。