【发布时间】:2014-11-21 13:08:46
【问题描述】:
所以我目前正在研究一个图像调整器,它工作/工作得很好,但除了当我一次处理太多图像导致程序崩溃时它给了我一个 OutOfMemoryException。
所以为了解决这个问题,我将方法包装在 using 语句中,以便正确处理位图。
但是我注意到,如果我在 using 语句中返回我的位图,我会收到“ArgumentException was unhandled”消息
这是我的 ImageResize 方法:
public Bitmap ResizeImage(MemoryStream ms, Size size)
{
if (comboBox2.Text == "Pixel")
{
using (Bitmap img = new Bitmap(new Bitmap(ms, true), size.Width, size.Height))
{
var original = new Bitmap(ms, true);
Graphics graphic = Graphics.FromImage(img);
//IRRELEVANT CODE.....
return img;
}
}
else
{
return null;
}
当我尝试将图像保存在 ImageResize 方法之外时:
private void button1_Click(object sender, EventArgs e)
{
//IRRELEVANT CODE ...
img = ResizeImage(memory, new Size(getX(), getY()));
//IRRELEVANT CODE ...
img.Save(outputFileName, codec, encoderParams); //<-Exception occurs here
}
当我删除 using 语句时,一切都再次完美正常,但是我必须使用 using 块来处理 Bitmap,从而防止内存泄漏。 此外,当我将图像保存在 using 语句中时,它也可以正常工作,但这不是我的解决方案。
我做错了什么?对我来说,位图似乎没有正确返回。
感谢任何帮助,并在此先感谢 拉万德
【问题讨论】:
-
我喜欢
//IRRELEVANT CODE ...的评论。它属于this thread。 -
哈哈哈,如果你喜欢就贴吧:D 但老实说,在这种情况下它是无关紧要的
标签: c# bitmap resize using argumentexception