.net 调整图像大小时的质量损失

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

这段代码从原始文件生成缩略图,它保持纵横比,还保持垂直和水平分辨率

我的问题是,一些生成的缩略图质量很低,低于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;
                }
使用(Stream=file.OpenReadStream())
{
var-defWidth=815;
var currImage=Image.FromStream(stream);
如果(currImage.Width<815&&currImage.Height