我正在尝试在 .NET 中调整图像大小,但调整大小后的图像周围出现微弱的黑色边框。我找到了一个帖子——http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/cf765094-c8c1-4991-a1f3-cecdbd07ee15/ http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/cf765094-c8c1-4991-a1f3-cecdbd07ee15/有人说使目标矩形大于画布是有效的,但这对我不起作用。它去掉了顶部和左侧边框,但右侧和底部仍然存在,并且是全 1px 厚的黑色。
我错过了什么吗?我的代码如下。
Image image = ... // this is a valid image loaded from the source
Rectangle srcRectangle = new Rectangle(0,0,width, height);
Size croppedFullSize = new Size(width+3,height+3);
Rectangle destRect = new Rectangle(new Point(-1,-1), croppedFullSize);
using(Bitmap newImage = new Bitmap(croppedFullSize.Width, croppedFullSize.Height, format))
using(Graphics Canvas = Graphics.FromImage(newImage)) {
Canvas.SmoothingMode = SmoothingMode.AntiAlias;
Canvas.InterpolationMode = InterpolationMode.HighQualityBicubic;
Canvas.PixelOffsetMode = PixelOffsetMode.HighQuality;
Canvas.FillRectangle(Brushes.Transparent, destRect);
Canvas.DrawImage(image, destRect, srcRectangle, GraphicsUnit.Pixel);
newImage.Save(filename, image.RawFormat);
}
只需向 DrawImage 方法提供一个 ImageAttributes 实例,并将 WrapMode 设置为 TileFlipXY。这将防止边缘与背景颜色混合。
对于不会像此处其他答案那样泄漏内存的示例代码,看到这个要点 https://github.com/imazen/lightresize
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)