读取图片并显示在PictureBox里,这段代码执行没有问题:
//picPhoto为pictureBox 控件
byte[] b = (byte[])dt.Rows[0]["Photo"]; //dt为查询出的DataTable,Photo为表里的image字段名称
MemoryStream s = new MemoryStream(b, true);
s.Write(b,0,b.Length);
Image a = new Bitmap(s);
Bitmap bit = new Bitmap(picPhoto.Width, picPhoto.Height);
Graphics g = Graphics.FromImage(bit);//从指定的 Image 创建新的 Graphics(绘图)。
g.DrawImage(a, new Rectangle(0, 0, bit.Width, bit.Height), new Rectangle(0, 0, a.Width, a.Height), GraphicsUnit.Pixel);
picPhoto.Image = bit;
下面是保存修改后的PictureBox里的图片到数据库的代码,这段代码出错,系统提示“将参数值从 Int32 转换到 Byte[] 失败”。:
MemoryStream ms = new MemoryStream();
picPhoto.Image.Save("a.jpg");
FileStream fs = new FileStream("a.jpg", FileMode.Open, FileAccess.Read);
BinaryReader binaryReader = new BinaryReader(fs);
byte[] img = binaryReader.ReadBytes((int)fs.Length);
binaryReader.Close();
fs.Close();
File.Delete("a.jpg");
info.Photo = img; //info为定义的实体类
请问这是什么原因啊?
4 个解决方案
#1
有人能帮忙看看吗?
#2
byte[] img = binaryReader.ReadBytes((int)fs.Length);
调试是不是这里错了?ReadBytes()参数类型错了
调试是不是这里错了?ReadBytes()参数类型错了
#3
错误停在哪一句上?另外,文件到byte[]可以用File.ReadAllBytes完成,简单很多。
#4
不好意思,是我的SQL语句写错了。不是其它问题。
谢谢大家!
谢谢大家!
#1
有人能帮忙看看吗?
#2
byte[] img = binaryReader.ReadBytes((int)fs.Length);
调试是不是这里错了?ReadBytes()参数类型错了
调试是不是这里错了?ReadBytes()参数类型错了
#3
错误停在哪一句上?另外,文件到byte[]可以用File.ReadAllBytes完成,简单很多。
#4
不好意思,是我的SQL语句写错了。不是其它问题。
谢谢大家!
谢谢大家!