【问题标题】:Compressing Multi Frame Tiff压缩多帧 Tiff
【发布时间】:2014-06-20 16:14:13
【问题描述】:

我目前正在生成多个图像并将它们保存到多帧 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 页,文件大小为 11 MB+。

有没有办法可以压缩 tiff 以节省大小?

如果我失去一些图像质量也没关系。

【问题讨论】:

    标签: c# compression tiff multipage


    【解决方案1】:

    添加一个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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多