【问题标题】:C# merge tiff files without increasing file size 2-3xC# 合并 tiff 文件而不增加文件大小 2-3 倍
【发布时间】:2020-06-24 11:11:04
【问题描述】:

我需要将单个 tiff 文件合并为一个。网上有很多例子看起来都很相似,比如这个Merge multiple multi-page tiff images to a single tiff C#

问题是,所有这些解决方案都会使单个页面文件的组合文件大小增加一倍或三倍。

我只是尝试了一个在线 tiff 合并工具,文件大小没有增加,所以我知道它是可能的。

有人知道如何在 c# 代码中减小文件大小吗?

这是我使用的代码。

Bitmap firstImage = new Bitmap(images[0].bitmap);

encoder = System.Drawing.Imaging.Encoder.SaveFlag;
encoderInfo = ImageCodecInfo.GetImageEncoders()[3];
encoderParameters = new EncoderParameters(1); //(2)
encoderParameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.MultiFrame);
// encoderParameters.Param[1] = new EncoderParameter(Encoder.Compression, (long)EncoderValue.CompressionCCITT4);

firstImage.Save(path, encoderInfo, encoderParameters);


encoderParameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.FrameDimensionPage);

// Add the remaining images to the tiff
for (int i = 1; i < images.Count; i++)
{
    firstImage.SaveAdd(images[i].bitmap, encoderParameters);
}

// Close out the file
encoderParameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.Flush);
firstImage.SaveAdd(encoderParameters);

【问题讨论】:

  • 我没有解决方案,但我想我看到了问题所在。 TIFF 是一种压缩格式,C# 将文件转换为未压缩的位图,然后将它们保存为 TIFF。我会寻找 EncoderParameter 选项来设置压缩比
  • 是的,它是压缩。现在,多页 tiff 甚至比单个 tiff 的组合文件大小还要小。我编辑了我的帖子以显示解决方案,以防有人在某个时候找到它。
  • 不要编辑您的问题以包含解决方案 - 写一个答案。在 Stack Overflow 上回答您自己的问题非常好:)

标签: c# image tiff


【解决方案1】:

找到答案:) 需要添加

ep.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionCCITT4);

【讨论】:

  • 请解释为什么这个答案有效,为什么你选择那个特定的选项。
猜你喜欢
  • 2018-01-06
  • 2014-01-24
  • 2016-10-09
  • 1970-01-01
  • 2015-09-29
  • 2021-01-13
  • 2013-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多