c# 关于二进制流(获取、保存图片)
从数据库获取图片文件,显示在picturebox中:
1 byte[] arr; 2 if (fdtThisColor.Rows[0]["colorimage"] != null && fdtThisColor.Rows[0]["colorimage"].ToString() != "") 3 { 4 arr = (byte[])(fdtThisColor.Rows[0]["colorimage"]); 5 MemoryStream ms = new MemoryStream(); //新建内存流 6 ms.Write(arr, 0, arr.Length); //附值 7 picSignal.Image = Image.FromStream(ms); //读取流中内容 8 }
选择图片文件,显示在picturebox中:
1 openFileDialog1.Title = "请选择要插入的图片"; 2 openFileDialog1.Filter = "图片文件(*)|*.jpg;*.gif;*.png;*.bmp"; 3 if (openFileDialog1.ShowDialog() == DialogResult.OK) 4 { 5 //判断图片是否符合大小 6 Bitmap bmp = new Bitmap(openFileDialog1.FileName); 7 int w = bmp.Width;//宽 8 int h = bmp.Height;//高 9 FileInfo fi = new FileInfo(openFileDialog1.FileName); 10 long _size = fi.Length;//得到文件的字节大小 11 if ((w > 170) || (h > 230)) 12 { 13 MessageBox.Show("上传图片大小尺寸不得超过170px*230px"); 14 return; 15 }
backname=System.IO.Path.GetExtension(openFileDialog1.FileName);//获取后缀名 16 }
一种比较笨的存储图片的二进制流:
/// <summary> /// 获取图片二进制 /// </summary> /// <param name="pic">存储图片的picturebox控件</param> /// <param name="name">图片后缀名</param> /// <returns></returns> private byte[] getbyte(PictureBox pic,string name)// { byte[] arr=null; MemoryStream ms = new MemoryStream(); if (name.ToLower() == ".gif") { pic.Image.Save(ms, ImageFormat.Gif);//指定图片的格式 } else if (name.ToLower() == ".png") { pic.Image.Save(ms, ImageFormat.Png); } else if (name.ToLower() == ".bmp") { pic.Image.Save(ms, ImageFormat.Bmp); } else if (name.ToLower() == ".jpeg" || name.ToLower() == ".jpg") { pic.Image.Save(ms, ImageFormat.Jpeg); } arr = ms.GetBuffer();//主要为这句 return arr; }
将图片以二进制存入oracle数据库中,用以上方法先获取到二进制流,存入数据库的sql语句如下:
1 sqlStr = "insert into publicservice_colorstandard(seq,elementname,colorname,colorimage,colorremark)"; 2 sqlStr += " values(" + seqmax.ToString() + ",'" + elemnetname + "','" + colorname + "',:ico1,'" + remark + "')"; 3 OracleParameter oracleParameter1 = new OracleParameter(); 4 oracleParameter1 = new OracleParameter("ico1", scion); 5 oracleParameter1.DbType = DbType.Binary; 6 int r = this.ExecuteUpdateByParameters(sqlStr, oracleParameter1);