C#:为什么缩小图像的大小会导致这些图像的质量非常差?我能做什么

C#:为什么缩小图像的大小会导致这些图像的质量非常差?我能做什么,c#,image-processing,C#,Image Processing,几天前,我问了一个问题。我终于能让它工作了。现在,当用户上载图像时,它的3个副本(具有不同的维度)保存到数据库中 但是,不幸的是,这种维数的减少明显降低了上传图像的质量。只有保存时没有标注的副本才能保持其质量 我是否应该期待质量的降低?这张照片看起来很糟糕(像一张新闻报纸的照片) 有什么我能做的吗?这是我需要在代码中设置的选项 感谢您的帮助,原因是您使用的功能仅用于制作低质量图像 请参阅MSDN文档中有关GettImage的以下备注: GettImage方法有效 那么当要求的缩略图 图像的大小约

几天前,我问了一个问题。我终于能让它工作了。现在,当用户上载图像时,它的3个副本(具有不同的维度)保存到数据库中

但是,不幸的是,这种维数的减少明显降低了上传图像的质量。只有保存时没有标注的副本才能保持其质量

我是否应该期待质量的降低?这张照片看起来很糟糕(像一张新闻报纸的照片)

有什么我能做的吗?这是我需要在代码中设置的选项

感谢您的帮助,原因是您使用的功能仅用于制作低质量图像

请参阅MSDN文档中有关GettImage的以下备注:

GettImage方法有效 那么当要求的缩略图 图像的大小约为120 x 120 像素。如果你要求一个大的 缩略图图像(例如,300 x 300)从具有 嵌入缩略图,可能有 产品质量明显下降 缩略图。最好是 缩放主图像(而不是 按比例缩放嵌入的缩略图) 调用DrawImage方法

有关如何在C#中执行高质量图像缩放的示例,请参见以下问题:


我不太确定您链接到的代码是如何工作的

这里有一个更好的例子

其实质是:

Bitmap bmPhoto = new Bitmap(destWidth, destHeight, 
                            PixelFormat.Format24bppRgb);
bmPhoto.SetResolution(imgPhoto.HorizontalResolution, 
                      imgPhoto.VerticalResolution);

Graphics grPhoto = Graphics.FromImage(bmPhoto);
grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic;

grPhoto.DrawImage(imgPhoto, 
                  new Rectangle(destX,destY,destWidth,destHeight),
                  new Rectangle(sourceX,sourceY,sourceWidth,sourceHeight),
                  GraphicsUnit.Pixel);

查看类似
插值模式
的设置,它允许您控制质量(处理速度与质量)。

如果这些是JPEG,您可能需要更改压缩设置-JPEG是有损的,它们通过牺牲质量来实现更小的尺寸。你用什么来调整尺寸?在resize方法或save方法中应该有一些参数,允许您设置压缩级别。