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);

 

 

posted on 2013-11-13 14:21  Mis_Eur  阅读(4219)  评论(0编辑  收藏  举报

导航