WPF图片读取数据库

将图片填入到数据库中,核心代码

1.将图片转化为流的形式(转化为byte类型的数据)

//将图片转为流的形式,goods.fileName是图片的地址
byte[] imageData = File.ReadAllBytes(goods.fileName);

2.将imageData赋值给实体(实体接收的属性的数据类型是Byte)

goods.pic = imageData;

将数据库中保存的照片显示出来:

核心代码是将图片的信息放入表中的代码不一样(需要新写一个在SQLHelper层中,只能用来转换图片这个字段,其他的字段不能转换)

public BitmapImage ExecuteQuerypic(string cmdtext, MySqlParameter[] paras, CommandType ct)
        {
            
            //实例化数据库的操作,调用GetConn查看数据库是否连接的方法
            cmd = new MySqlCommand(cmdtext, GetConn());
            BitmapImage newBitmapImage = new BitmapImage();
            cmd.CommandType = ct;

            cmd.Parameters.AddRange(paras);

            sdr = cmd.ExecuteReader();
            if (sdr.Read())
                {

                    //读出图片字节数组至byte[]
                    byte[] imageByte = new byte[sdr.GetBytes(0, 0, null, 0, int.MaxValue)];
                    sdr.GetBytes(0, 0, imageByte, 0, imageByte.Length);


                    //将图片字节数组加载入缓冲流
                    MemoryStream imageStream = new MemoryStream(imageByte);
                    //将位置设置为流的开头。
                    imageStream.Seek(0, System.IO.SeekOrigin.Begin);

                    //用信号通知 BitmapImage 初始化开始。
                    newBitmapImage.BeginInit();
                    //获取或设置 BitmapImage 的流的源。
                    newBitmapImage.StreamSource = imageStream;
                    //用信号通知 BitmapImage 初始化结束。
                    newBitmapImage.EndInit();
            }

            return newBitmapImage;    //返回D层
        }

最后附加一个添加照片,并将照片显示在image框中,获取图片的地址的代码

private void Button_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            //过滤上传图片的类型  
            ofd.Filter = "jpg图片|*.jpg";
            if (ofd.ShowDialog() == true)
            {   
                //这个是将图片的地址赋值给实体             
                goods.fileName = ofd.FileName;
                //将选中的照片显示在image框中
                imgGoods.Source = new BitmapImage(new Uri(ofd.FileName));
               
            }
           
        }

 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值