开发人事档案系统时,一般都要利用pictureBox对人员的照片进行操作,包括选择保存照片、另存照片、删除照片,如下图:
将照片保存到数据库和从数据库中删除,网友写了很多实用代码,非常好用。但是要将pictureBox上显示的照片另存为磁盘文件时,非常容易出现“GDI+ 发生一般性错误”。网上有很多建议,都不符合我的要求,要么另存出来的照片不能正常显示,要么代码非常繁琐。经过我测试,其实方法很简单,C#一句代码就可以实现pictureBox照片另存为磁盘文件而不出错。主要代码如下:
if (SaveFileDialog.ShowDialog() == DialogResult.OK)
{
pictureName = SaveFileDialog.FileName;
if (pictureBox1.Image != null)
{
////********************照片另存*********************************
using (MemoryStream mem = new MemoryStream())
{
//这句很重要,不然不能正确保存图片或出错(关键就这一句)
Bitmap bmp = new Bitmap(pictureBox1.Image);
//保存到内存
//bmp.Save(mem, pictureBox1.Image.RawFormat );
//保存到磁盘文件
bmp.Save(@pictureName, pictureBox1.Image.RawFormat);
bmp.Dispose();
MessageBox.Show("照片另存成功!","系统提示");
}
////********************照片另存*********************************
}
}