照片的保存与读取
/// <summary> /// 图片转二进制 /// </summary> /// <param name="imgPhoto">图片对象</param> /// <returns>二进制</returns> public static byte[] PhotoImageInsert(System.Drawing.Image imgPhoto) { //将Image转换成流数据,并保存为byte[] MemoryStream mstream = new MemoryStream(); imgPhoto.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg); byte[] byData = new Byte[mstream.Length]; mstream.Position = 0; mstream.Read(byData, 0, byData.Length); mstream.Close(); return byData; }
调用这个方法把普通转为2进制,并把它转成 Base64 形式的 System.String
string s = Convert.ToBase64String(PhotoImageInsert(PictureBox.Image))
转完之后,剩下的就是保存到数据库了,这个就是普通的Insert了,倒是要注意字段的长度
读取图片并显示出来:
如何读取的代码我就不写了,相信大家肯定是没问题的。
//字符串转二进制
byte[] imageBytes = Convert.FromBase64String(dt.Rows[0]["img_pic"].ToString());
MemoryStream ms = new MemoryStream(imageBytes);
Bitmap bmpt = new Bitmap(ms);
PictureBox.Image = bmpt;
图片另存
SaveFileDialog.Title = "附件另存"; SaveFileDialog.Filter = "jpg图片|*.JPG|gif图片|*.GIF|png图片|*.PNG|jpeg图片|*.JPEG"; SaveFileDialog.FilterIndex = 3;//设置默认文件类型显示顺序 SaveFileDialog.RestoreDirectory = true; //点了保存按钮进入if (picBox1.Image != null) { if (SaveFileDialog.ShowDialog() == DialogResult.OK) { string pictureName = SaveFileDialog.FileName; //照片另存 using (MemoryStream mem = new MemoryStream()) { //这句很重要,不然不能正确保存图片或出错(关键就这一句) Bitmap bmp = new Bitmap(picBox1.Image); //保存到磁盘文件 bmp.Save(@pictureName, PictureBox.Image.RawFormat); bmp.Dispose(); MessageBox.Show("附件另存成功!", "注意", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } else { MessageBoxEx.Show("没有附件信息!", "注意", MessageBoxButtons.OK, MessageBoxIcon.Information); }