如何解决调整图像大小时质量下降
此代码从原始文件生成缩略图,保持纵横比,还保持垂直和水平分辨率。
我的问题是,某些生成的缩略图的质量真的很差,小于1mb的图像效果很好并且不会丢失质量,其他尺寸较大的图像会失去质量,例如,当我尝试从1200x700的图像生成800x450的图像时很好,但7700x4500文件看起来模糊并且质量很低。
有什么办法解决这个问题?谢谢!
using (Stream stream = file.OpenReadStream())
{
var defWidth = 815;
var currImage = Image.FromStream(stream);
if(currImage.Width < 815 && currImage.Height <458)
{
sectionImageUploadModel.Result = false;
sectionImageUploadModel.Uri = "";
sectionImageUploadModel.Message = "Hata Oluştu";
return sectionImageUploadModel;
}
double aspectRatio = (double)currImage.Width / defWidth;
var newHeight = currImage.Height / aspectRatio;
Image newImage = GenerateThumbnail(defWidth,(int)newHeight,stream);
var qualityEncoder = System.Drawing.Imaging.Encoder.Quality;
var quality = (long)100;
var ratio = new EncoderParameter(qualityEncoder,quality);
var codecParams = new EncoderParameters(1);
codecParams.Param[0] = ratio;
var format = ImageFormat.Jpeg;
if (!(ext == "jpg"))
format = ImageFormat.Png;
var codecInfo = GetEncoder(format);
Bitmap bitMap = new Bitmap(newImage);
bitMap.SetResolution(currImage.HorizontalResolution,currImage.VerticalResolution);
if (bitMap != null)
{
bitMap.Save(filePath + "/" + fileName,codecInfo,codecParams);
}
else
{
sectionImageUploadModel.Result = false;
sectionImageUploadModel.Uri = "";
sectionImageUploadModel.Message = "Hata Oluştu";
return sectionImageUploadModel;
}
}
sectionImageUploadModel.Result = true;
sectionImageUploadModel.Uri = fileName;
sectionImageUploadModel.Message = "Resim Yüklendi";
return sectionImageUploadModel;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。