我正在加载文件:
System.Drawing.Image img = System.Drawing.Image.FromFile(FilePath);
现在我想保存图片:
img.Save(SavePath);
这有效..除非FilePath == SavePath
,否则它决定给我错误:
System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.
所以我试图在打开文件后立即删除该文件:
System.Drawing.Image img = System.Drawing.Image.FromFile(FilePath);
File.Delete(FilePath);
它给了我错误:
System.IO.IOException: The process cannot access the file 'filename.jpg' because it is being used by another process.
所以... 如何修改现有文件,当其未被任何人使用时,该文件是“正在使用”?
答案 0 :(得分:2)
图像将一直处于锁定状态(See here)。
文件保持锁定状态,直到图像被丢弃。
您必须将图像保存在其他位置(或将其内容复制出来),然后使用using
子句处理打开的图像。
示例:
using(Image image1 = Image.FromFile("c:\\test.jpg"))
{
image1.Save("c:\\test2.jpg");
}
System.IO.File.Delete("c:\\test.jpg");
System.IO.File.Move("c:\\test2.jpg", "c:\\test.jpg");
答案 1 :(得分:1)
您可以使用内存流或将其放在byte [] array
中