我正在用c#语言开发asp.net MVC应用程序,在那里我已经提供了上传图像的工具。我想提供裁剪图像并显示其缩略图。我通过使用System.Drawing.Bitmap命名空间及其类来实现这一点,但它会在压缩时影响缩略图的质量。我该怎么办我经历了这个link
但无法赶上。请帮忙。 的编辑: 我之前尝试过申请上面的链接:我的代码是:
public static void ResizeAndSaveHighQualityImage(System.Drawing.Image image,int width,int height,string pathToSave,int quality) {
// the resized result bitmap
using (Bitmap result = new Bitmap(width, height))
{
// get the graphics and draw the passed image to the result bitmap
using (Graphics grphs = Graphics.FromImage(result))
{
grphs.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
grphs.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
grphs.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
grphs.DrawImage(image, 0, 0, result.Width, result.Height);
}
// check the quality passed in
if ((quality < 0) || (quality > 100))
{
string error = string.Format("quality must be 0, 100", quality);
throw new ArgumentOutOfRangeException(error);
}
EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
string lookupKey = "image/jpeg";
var jpegCodec = ImageCodecInfo.GetImageEncoders().Where(i => i.MimeType.Equals(lookupKey)).FirstOrDefault();
//create a collection of EncoderParameters and set the quality parameter
var encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = qualityParam;
//save the image using the codec and the encoder parameter
result.Save(pathToSave, jpegCodec, encoderParams);
}
}
这也会产生低质量的图像。我从上面给出的链接也得不到多少。为什么我需要在那里写处理程序?那是必要的吗?
答案 0 :(得分:1)
问题可能是你没有设置你想要的压缩格式。
你试过JPG或PNG吗?
检查Bitmap.Save重载,你会发现一些需要编码器参数,这将让你提供一个mime类型,质量等级。
我希望这很有用:)