问题描述
存储图片代码:privatevoidbuttonX4_Click(objectsender,EventArgse){OpenFileDialogopenfile=newOpenFileDialog();openfile.Title="请选择图片";openfile.Filter="图片(*.jpg;*.bmp;*png)|*.jpeg;*.jpg;*.bmp;*.png|AllFiles(*.*)|*.*";if(DialogResult.OK==openfile.ShowDialog()){try{Bitmapbmp=newBitmap(openfile.FileName);pictureBox1.Image=bmp;pictureBox1.SizeMode=PictureBoxSizeMode.Zoom;MemoryStreamms=newMemoryStream();bmp.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);byte[]arr=newbyte[ms.Length];ms.Position=0;ms.Read(arr,0,(int)ms.Length);ms.Close();pic=Convert.ToBase64String(arr);}catch{}}privatevoidbuttonX1_Click(objectsender,EventArgse){mymeans.getsqlcom("insertintotb_studentvalues('"+textBoxX1.Text+"','"+textBoxX2.Text+"','"+textBoxX3.Text+"','"+comboBoxEx1.Text+"','"+textBoxX4.Text+"','"+textBoxX5.Text+"','"+pic+"','"+textBoxX6.Text+"','"+textBoxX7.Text+"')");}读取图片代码:mymeans.conn_open();dt=mymeans.getDataTable("selectPhotofromtb_studentwhereStuId='"+textBoxX1.Text+"'");pic=dt.Rows[0].ItemArray[0].ToString());try{if(!string.IsNullOrEmpty(pic)){byte[]imageBytes=Convert.FromBase64String(pic);MemoryStreammemoryStream=newMemoryStream(imageBytes,0,imageBytes.Length);memoryStream.Write(imageBytes,0,imageBytes.Length);Imageimage=Image.FromStream(memoryStream);this.pictureBox1.SizeMode=PictureBoxSizeMode.Zoom;this.pictureBox1.Image=image;}}catch{}}大家给我看看:数据库中Photo字段为image类型存储图片后出现《二进制数据》但在读取数据的时候不显示图片if(!string.IsNullOrEmpty(pic))//这句执行了//这一段好像没有执行byte[]imageBytes=Convert.FromBase64String(pic);MemoryStreammemoryStream=newMemoryStream(imageBytes,0,imageBytes.Length);memoryStream.Write(imageBytes,0,imageBytes.Length);Imageimage=Image.FromStream(memoryStream);this.pictureBox1.SizeMode=PictureBoxSizeMode.Zoom;this.pictureBox1.Image=image;求教!求教大侠!
解决方案
解决方案二:
把try.....catch注释了调试看看什么问题??
解决方案三:
没有执行说明if条件不满足,或者直接报错到了catch部分,调试看看是哪种情况
解决方案四:
绝对是报错了啊,,,在catch里面吧异常抛出来
解决方案五:
if(!string.IsNullOrEmpty(pic)){MessageBox.Show("你好!");//这句执行了byte[]imageBytes=Convert.FromBase64String(pic);MessageBox.Show("你好!");//这句没有执行MemoryStreammemoryStream=newMemoryStream(imageBytes,0,imageBytes.Length);memoryStream.Write(imageBytes,0,imageBytes.Length);Imageimage=Image.FromStream(memoryStream);this.pictureBox1.SizeMode=PictureBoxSizeMode.Zoom;this.pictureBox1.Image=image;}
解决方案六:
去掉try....catch后出现以下错误:输入的不是有效的Base-64字符串,因为它包含非Base-64字符、两个以上的填充字符,或者填充字符间包含非空白字符。麻烦大侠给我看看怎么修改才正确!
解决方案七:
我发现错误的原因就在这一句pic=dt.Rows[0].ItemArray[0].ToString();求大侠教我如歌修改这一句!