我在开发一系统时,将图片(任意格式的图片)保存到库,从库中读出数据到DATASET,然后将DATASET中的图片,在新的窗口中显示,该窗口有一个保存按钮,按下保存到本地DISK中,库中任意格式的图片,都转存成JPG文件!
试了很多很多的方式,最后通过SYSTEM>DRAWING.BITMAP对象完成,前后试了15种方案,到第16次时,成功
CODE见下:(希望给碰到同样问题的朋友一个参考)
//省略读库的程序,直接使用已经被填充的DATASET对象中的DATAROW对象
DataRow dRow = dRows[0];
byte[] imgByte = (byte[])dRow["pic_ole"]; //pic_ole为字段名称
MemoryStream ms = new MemoryStream(imgByte);
Bitmap bmp = new Bitmap(ms);
PicView.Image = (Image)bmp; //PicView为PictureBox控件
//此时图片已经读出来了,然后将PictureBox添加点击事件,将图片传递给另一个窗体的PictureBox对象中去,然后按下给FORM上的SAVE按钮,
//主要是这里,试了很多次,总算成功
FileStream fs = finfo.Create(); //finfo是FileInfo对象,已经使用NEW初始化过
Bitmap bmp = new Bitmap(pictureBox1.Image);//pictureBox1为本窗体上的PictureBox控件
PictureBox pic = new PictureBox();//如果直接使用pictureBox1.Image对象就发生GDI+发生一般性错误
pic.Image = Image.FromHbitmap(bmp.GetHbitmap());//使用BMP的句柄,给一个新的PictureBox控件
Image img = pic.Image;
img.Save(fs,ImageFormat.Jpeg);//如果这里使用文件名,还是发生GDI+发生一般性错误,不知道啥原因
pic.Dispose();
我的主页:itbaby.jss.cn