保存图像bmp c#

时间:2015-09-24 04:46:56

标签: c# image save bmp

我有这个以bmp格式绘制图像的功能

private void DrawImage(Byte[] imgData, PictureBox picBox)
  {
     int colorval;
     Bitmap bmp = new Bitmap(m_ImageWidth, m_ImageHeight);
     picBox.Image = (Image)bmp;

     for (int i=0; i<bmp.Width; i++)
     {
        for (int j=0; j<bmp.Height; j++)
        {
           colorval = (int)imgData[(j*m_ImageWidth)+ i];
           bmp.SetPixel(i,j,Color.FromArgb(colorval,colorval, colorval));
        }
     }
     picBox.Refresh();

    }

当我添加picBox.Image.Save(@"C:\Users\Jose Moreno\Desktop", System.Drawing.Imaging.ImageFormat.Bmp);

在PicBox.Refresh();下面,程序与errror崩溃: “System.Drawing.dll中发生了'System.Runtime.InteropServices.ExternalException'类型的未处理异常”

为什么程序会崩溃?寻求帮助。

1 个答案:

答案 0 :(得分:2)

Image.Save(String, ImageFormat)需要完整的文件名,而不仅仅是文件路径"C:\Users\Jose Moreno\Desktop"(可能)是预先存在的目录的名称,而不是可以创建的文件的名称。您需要传递实际的文件名,例如:

picBox.Image.Save(@"C:\Users\Jose Moreno\Desktop\TestFilename.bmp", System.Drawing.Imaging.ImageFormat.Bmp);

如果无法创建指定名称的文件,您将收到此难以理解的错误。

请注意,如果图像最初是从文件加载的,则在图像被丢弃之前无法保存回同一文件,因为文件已被锁定。见How can I fix this GDI+ generic exception when I save images?。但这不是你问题中显示的问题。