.net 调整图像大小时的质量损失
这段代码从原始文件生成缩略图,它保持纵横比,还保持垂直和水平分辨率 我的问题是,一些生成的缩略图质量很低,低于1mb大小的图像效果很好,而且不会失去质量,其他尺寸较大的图像会失去质量,例如,当我尝试从1200x700图像生成800x450图像时,效果很好,但7700x4500文件看起来模糊,质量很低 有没有办法解决这个问题?谢谢.net 调整图像大小时的质量损失,.net,image,bitmap,resize,thumbnails,.net,Image,Bitmap,Resize,Thumbnails,这段代码从原始文件生成缩略图,它保持纵横比,还保持垂直和水平分辨率 我的问题是,一些生成的缩略图质量很低,低于1mb大小的图像效果很好,而且不会失去质量,其他尺寸较大的图像会失去质量,例如,当我尝试从1200x700图像生成800x450图像时,效果很好,但7700x4500文件看起来模糊,质量很低 有没有办法解决这个问题?谢谢 using (Stream stream = file.OpenReadStream())
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;
}
使用(Stream=file.OpenReadStream())
{
var-defWidth=815;
var currImage=Image.FromStream(stream);
如果(currImage.Width<815&&currImage.Height