GDI +中发生了一般错误

Lak*_*ani 19 c# gdi+ bitmap

我使用以下方法将图像加载到Picture Box中:

picturebox1.Image = Image.FromFile()
Run Code Online (Sandbox Code Playgroud)

我用以下方法保存它:

Bitmap bm = new Bitmap(pictureBox1.Image);
bm.Save(FileName, ImageFormat.Bmp);
Run Code Online (Sandbox Code Playgroud)

它在创建新文件时工作得很好,但是当我尝试替换现有图像时,我会抛出以下运行时错误:

GDI +中发生了一般错误

那么我该怎么做才能解决这个问题呢?

Jal*_*aid 15

因为您使用的是图像文件,请picturebox1.Image尝试将其保存到不同的文件路径:

picturebox1.Image = Image.FromFile(FileName);
Bitmap bm = new Bitmap(pictureBox1.Image); 
bm.Save(@"New File Name", ImageFormat.Bmp);
Run Code Online (Sandbox Code Playgroud)

编辑:您还可以在第一个位置添加图像副本,如:

picturebox1.Image = new Bitmap(Image.FromFile(FileName));
Bitmap bm = new Bitmap(pictureBox1.Image); 
bm.Save(FileName, ImageFormat.Bmp);//no error will occurs here.
Run Code Online (Sandbox Code Playgroud)


ada*_*ost 6

FromFile方法锁定文件,因此使用Image.FromStream()方法读取图像:

byte[] bytes = System.IO.File.ReadAllBytes(filename);
System.IO.MemoryStream ms = new System.IO.MemoryStream(bytes);
pictureBox1.Image = Image.FromStream(ms);
Run Code Online (Sandbox Code Playgroud)

然后像以前一样保存.