我有这个以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'类型的未处理异常”
为什么程序会崩溃?寻求帮助。
答案 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?。但这不是你问题中显示的问题。