压缩多帧Tiff

本文关键字:Tiff 压缩 | 更新日期: 2023-09-27 18:09:48

我目前正在生成多个图像并将它们保存为多帧tiff。

我用这个代码来保存tiff。

System.Drawing.Imaging.Encoder encoder = System.Drawing.Imaging.Encoder.SaveFlag;
ImageCodecInfo encoderInfo = ImageCodecInfo.GetImageEncoders().First(i => i.MimeType == "image/tiff");
EncoderParameters encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.MultiFrame);
// Save the first frame of the multi page tiff
Bitmap firstImage = (Bitmap)_imageList[0];
firstImage.Save(System.IO.Directory.GetCurrentDirectory() + @"'ChargeInvoice Images'" + OrderNumber + "_Invoice.tiff", encoderInfo, encoderParameters);
encoderParameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.FrameDimensionPage);
// Add the remining images to the tiff
for (int i = 1; i < _imageList.Count; i++)
{
 Bitmap img = (Bitmap)_imageList[i];
 firstImage.SaveAdd(img, encoderParameters);
}
// Close out the file
encoderParameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.Flush);
firstImage.SaveAdd(encoderParameters);

有些tiff是18+页,文件大小为11mb +。

有一种方法,我可以压缩tiff以节省减少大小?

如果我失去一些图像质量是可以的。

压缩多帧Tiff

添加一个EncoderParam用于压缩:

System.Drawing.Imaging.Encoder encoder = System.Drawing.Imaging.Encoder.SaveFlag;
System.Drawing.Imaging.Encoder compressionEncoder = System.Drawing.Imaging.Encoder.Compression;
EncoderParameters encoderParameters = new EncoderParameters(2);
encoderParameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.MultiFrame);
encoderParameters.Param[1] =  new EncoderParameter(compressionEncoder, (long)EncoderValue.CompressionLZW);