首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET Framework >

小弟我写了一个存储图片到Oracle数据库的方法,但是从数据库读取的时候出错了

2012-12-23 
我写了一个存储图片到Oracle数据库的方法,但是从数据库读取的时候出错了。图片转化为二进制数组的方法: pri

我写了一个存储图片到Oracle数据库的方法,但是从数据库读取的时候出错了。
图片转化为二进制数组的方法:


 private static Byte[] ConvertImageToByte(Image image)
        {
            //图片转换为二进制数组begin
            MemoryStream mstream = new MemoryStream();
            image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg);
            Byte[] ImageByte = new Byte[(int)mstream.Length];
            ImageByte = mstream.GetBuffer();
            //mstream.Read(ImageByte, 0, ImageByte.Length);//这种错误了            mstream.Close();
            //end
            return ImageByte;
        }


从数据库读取数据后,转换为image的方法为:

 private Image ConvertImageByByte(byte[] buffer)
        {
            if (buffer != null)
            {
                MemoryStream ms = new MemoryStream(buffer);
                try
                {
                    Image img = System.Drawing.Image.FromStream(ms);
                    ms.Close();
                    return img;
                }
                catch (Exception ex)
                {
                    return null;
                }
                finally
                {
                    ms.Close();
                }
            }
            else
            {
                return null;
            }
        }





当使用:
mstream.Read(ImageByte, 0, ImageByte.Length)这句将图片转换为数组的时候,发现存储到oracle数据库中的数据出错了,为什么呢?
[最优解释]

            image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg);
            mstream.Position = 0;

[其他解释]
而且当取出数据在转换为图片时
这句:
Image img = System.Drawing.Image.FromStream(ms);
提示参数无效。。。。
[其他解释]
为什么要设置Position这个属性呢?从流中0位置开始读取数据??
引用:
C# code

            image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg);
            mstream.Position = 0;

热点排行