我得到的参数无效异常..保存图像
这是我保存图片的代码
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);
}
答案 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);