Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 压缩多帧Tiff_C#_Compression_Tiff_Multipage - Fatal编程技术网

C# 压缩多帧Tiff

C# 压缩多帧Tiff,c#,compression,tiff,multipage,C#,Compression,Tiff,Multipage,我目前正在生成多个图像并将其保存到多帧tiff 我正在使用此代码保存tiff System.Drawing.Imaging.Encoder encoder = System.Drawing.Imaging.Encoder.SaveFlag; ImageCodecInfo encoderInfo = ImageCodecInfo.GetImageEncoders().First(i => i.MimeType == "image/tiff"); EncoderParameters encod

我目前正在生成多个图像并将其保存到多帧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);
System.Drawing.Imaging.Encoder编码器=System.Drawing.Imaging.Encoder.SaveFlag;
ImageCodecInfo encoderInfo=ImageCodecInfo.GetImageEncoders().First(i=>i.MimeType==“image/tiff”);
EncoderParameters EncoderParameters=新的EncoderParameters(1);
encoderParameters.Param[0]=新的EncoderParameter(编码器,(长)EncoderValue.MultiFrame);
//保存多页tiff的第一帧
位图firstImage=(位图)u imageList[0];
firstImage.Save(System.IO.Directory.GetCurrentDirectory()++“\ChargeInvoice Images\”+OrderNumber+“\u Invoice.tiff”、encoderInfo、encoderParameters);
encoderParameters.Param[0]=新的EncoderParameter(编码器,(长)EncoderValue.FrameDimensionPage);
//将重新录制的图像添加到tiff
对于(int i=1;i<\u imageList.Count;i++)
{
位图img=(位图)u图像列表[i];
SaveAdd(img、encoderParameters);
}
//结案
encoderParameters.Param[0]=新的EncoderParameter(encoder,(long)EncoderValue.Flush);
SaveAdd(编码器参数);
一些TIFF的页面超过18页,文件大小为11MB+

有没有一种方法可以压缩TIFF以节省或缩小尺寸


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

添加一个编码器参数进行压缩:

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