2010-05-31 81 views
3

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

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

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

回答

3

BitMiracle LibTiff.net支持JPG(以及其他所有Tiff编解码器)以及多页面tiff。我已经使用它,虽然与其他编解码器结合在一起,并有很好的体验;它也经过了很好的测试(包括单元测试)。根据LGPL提供。支持也非常好(最近发现文件> 2GB的问题,我的快速反应和更新的代码)

希望这可以帮助你。对不起,我不禁对这个组件充满热情,因为它帮助了我很多并且是免费的。

+1

从版本2.0开始LibTiff.Net免费提供BSD许可下的所有用途。 – Bobrovsky 2010-08-04 06:13:53

+1

经过许多艰苦的工作设法使用这个库(BitMiracle LibTiff.Net),结果甚至比需要的更好 - 为我保存彩色分页tiff,只需要一半的文件大小。 – 2016-08-09 12:06:47

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); 
     } 
    } 
} 

有一点要注意的是,有JPEG压缩的两种口味在TIFF,一个由标准和被确认/勉强容忍一个制裁。后者被称为旧式JPEG,它被固定在TIFF上,并且导致比TIFF中的任何其他压缩文件都更多的文件被破坏。上面的代码将使用符合标准的JPEG压缩。

+0

如何用这个调整Jpeg压缩等级? – Don 2017-08-09 18:55:36

+0

enc.JpegQuality = someIntegerFrom0to100; – plinth 2017-08-09 20:01:49