我在开发一系统时,将图片(任意格式的图片)保存到库,从库中读出数据到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();
本文来自:中国Web技术站(http://www.wxhtml.com)原文链接:http://www.wxhtml.com/viewnews-9987
最后备注说一下,本文是由别站转载,但转载这个站也太TM流氓了,你不让转载就注明,转载也是给你做广告的,没必有搞的一堆乱七八糟的东西,光转这个就转了十多分钟。这个问题主要是今天我做项目刚好遇到,郁闷了N个小时,也试了N篇,所以就先转过来了。有问题可以问我。