【发布时间】:2015-08-07 16:54:53
【问题描述】:
我有以下代码:
private Image ResizeImage(Image image, int width, int height, bool paddOverflow)
{
//Calculate sizes here. Removed for brevity
var target = new Bitmap(image, finalWidth, finalHeight);
using (var graphic = Graphics.FromImage(image))
{
graphic.Clear(Color.White);
graphic.CompositingQuality = CompositingQuality.HighQuality;
graphic.InterpolationMode = InterpolationMode.HighQualityBilinear;
graphic.CompositingMode = CompositingMode.SourceCopy;
graphic.DrawImage(target, 0, 0, finalWidth, finalHeight);
return target;
}
}
var image = ResizeImage(someImage, 100, 100, false);
我遇到的问题是,如果我将 target 包装在 using 语句中,那么 image 将无效。
我该如何做这样的事情,但要确保 image 已被处理掉。我在这里的方法感觉有些不对劲,但由于某种原因我无法发现。
【问题讨论】:
-
你确定你的代码没有把图片弄错??? Imo,您应该从
targetImage 创建 Graphics 对象。然后你可以在重新使用target之前处理掉image..
标签: c# memory-management dispose system.drawing