读书人

小弟我写了一个存储图片到Oracle数据库

发布时间: 2012-12-23 11:28:15 作者: rapoo

我写了一个存储图片到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;

读书人网 >.NET Framework

热点推荐