在winform中保存图像时,参数无效

时间:2010-11-22 12:24:27

标签: c# asp.net

我得到的参数无效异常..保存图像

这是我保存图片的代码

if (!File.Exists(pictureBox1.Tag.ToString()))
{
    Image image = pictureBox1.Image;
    image.Save(pictureBox1.Tag.ToString(), ImageFormat.Jpeg);
}
else
{
    string delStr = pictureBox1.Tag.ToString();
    pictureBox1.Image.Dispose();
    File.Delete(delStr);
    Image image = pictureBox1.Image;
    image.Save(delStr, ImageFormat.Jpeg);
    pictureBox1.Image = Image.FromFile(delStr);
}

2 个答案:

答案 0 :(得分:3)

else分支机构中,首先拨打Image上的Dispose(),然后尝试保存。这不可行,因为:

  

Dispose方法将Image留在   一个无法使用的状态。

也许你想这样做:

string delStr = pictureBox1.Tag.ToString();
File.Delete(delStr);
Image image = pictureBox1.Image;
image.Save(delStr, ImageFormat.Jpeg);
image.Dispose();
pictureBox1.Image = Image.FromFile(delStr);

但是,它仍在从刚保存到的文件中重新加载Image,所以它不是很有用。你可能想尝试类似的东西:

string filename = pictureBox1.Tag.ToString();
if (File.Exists(filename) {
    File.Delete(filename);
}
pictureBox1.Image.Save(filename, ImageFormat.Jpeg);

但是再一次,Image.Save()无论如何都会覆盖文件......所以你只需要这样做:

pictureBox1.Image.Save(pictureBox1.Tag.ToString(), ImageFormat.Jpeg);

答案 1 :(得分:1)

我看到了吗?你在保存之前处理图像了吗?如果是这样,这就是你的问题:

pictureBox1.Image.Dispose(); // THIS !!!!!! Just remove this line or move it to after save
Image image = pictureBox1.Image;
image.Save(delStr, ImageFormat.Jpeg);