開發人事檔案系統時,一般都要利用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("照片另存成功!","系統提示");
}
////********************照片另存*********************************
}
}