byte[] b = fc.getPhoto(pk);
if (b.Length > 0)
{
MemoryStream stream = new MemoryStream(b,true);
stream.Write(b, 0, b.Length);
Bitmap image = new Bitmap(stream);-----运行时抱错(参数无效)
stream.Close();
picturebox.Image = image;
}
fc.getPhoto(pk);从数据库取出对应的图片并转换成byte[]
我在网上看了一些方法都是这么写的,不知道是什么原因,请指点下。
if (b.Length > 0)
{
MemoryStream stream = new MemoryStream(b,true);
stream.Write(b, 0, b.Length);
Bitmap image = new Bitmap(stream);-----运行时抱错(参数无效)
stream.Close();
picturebox.Image = image;
}
fc.getPhoto(pk);从数据库取出对应的图片并转换成byte[]
我在网上看了一些方法都是这么写的,不知道是什么原因,请指点下。
...
cmd.CommandText = "select IMAGE from YOUR_TABLE"; //IMAGE为存储图像的字段
OracleDataReader rd = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (rd.Read())
{
buffByte = ((byte[])rd[0]);
}
System.IO.MemoryStream ms = new System.IO.MemoryStream(buffByte);
Bitmap bmp = new Bitmap(ms);不就行了吗?
cmd.CommandText = "select IMAGE from YOUR_TABLE"; 应为类似
cmd.CommandText = "select IMAGE from YOUR_TABLE where PK_COL=PK_VALUE";
也就是定位一行一列。
How To Read and Write BLOB Data by Using ADO.NET with Visual C# .NET
http://support.microsoft.com/default.aspx?scid=kb;EN-US;309158
DataGrid显示图片(物理路径式和Stream流式)和添加图片到数据库
http://singlepine.cnblogs.com/articles/288027.html
/// <summary>
/// 图像到64为字符
/// </summary>
/// <param name="image"></param>
/// <returns></returns>
private string ImageToBase64String(System.Drawing.Image image)
{
if (image==null)
{
return "" ;
}
try
{
MemoryStream ms=new MemoryStream(); if (image.RawFormat.Guid == ImageFormat.Icon.Guid)
{
Icon icon = Icon.FromHandle(((Bitmap)image).GetHicon());
icon.Save(ms);
}
else
{
image.Save (ms,image.RawFormat );
} byte[] img = ms.ToArray();
return Convert.ToBase64String(img,0,img.Length);
}
catch
{
return "";
}
}
/// <summary>
/// 字符到图像
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
private System.Drawing.Image Base64StringToImage(string data)
{
if (data == "")
{
return null;
}
try
{
byte[] img = Convert.FromBase64String(data);
MemoryStream ms = new MemoryStream(img);
System.Drawing.Image image = System.Drawing.Image.FromStream(ms);
return image;
}
catch
{
return null;
}
}