[英]c# jpeg compression with trackbar
我需要压缩jpeg文件,并且压缩率必须是动态的,由跟踪栏设置。 我正在使用C#,Windows窗体。 我认为变量jpgcompression只需要是“ Encoder”类型或类似的类型,但是不确定如何执行此操作。 不断得到:使用字符串或整数类型时出现“参数无效”错误消息。 我的代码如下:
public void resizeImage(Image newImg, int width, int height, string filePath, int jpgCompression)
{
Image newImage = new Bitmap(newImg, width, height);
ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg);
var jpgcompression = jpgCompression.ToString() + "L";
System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, jpgcompression);
myEncoderParameters.Param[0] = myEncoderParameter;
newImage.Save(filePath, jgpEncoder, myEncoderParameters);
}
private ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
将值作为长整数传递,并检查以确保传递的值介于0(最大压缩)和100(最大质量,无压缩)之间。
如果是这样,请检查异常以确保是问题所在的编码器参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.