我一直很难创建质量不差的缩略图。到目前为止,我想出的最好的代码是:
Bitmap bmp = new Bitmap(width, height);
Graphics graphic = Graphics.FromImage(bmp);
graphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphic.SmoothingMode = SmoothingMode.HighQuality;
graphic.PixelOffsetMode = PixelOffsetMode.HighQuality;
graphic.CompositingQuality = CompositingQuality.HighQuality;
graphic.DrawImage(photo, 0, 0, width, height);
return imageToByteArray(bmp);
产生这个宝石:
如果我在 Paint.NET 中调整相同图像的大小,我会得到:
哪个更好。我在网上找到的所有内容都指向我上面的代码的一些变体。我知道 Paint.NET 曾经是开源的。有谁知道他们做了什么魔术来创建如此好的调整大小功能,以及该功能是否可以在 C# 中重现?
更新:
此示例中的原始图像是 jpg