使用c#进行图像检索

时间:2009-05-20 06:44:28

标签: c# image stream

byte[] imageData = null;
long byteSize = 0;
byteSize = _reader.GetBytes(_reader.GetOrdinal(sFieldName), 0, null, 0, 0);

imageData = new byte[byteSize];
long bytesread = 0;
int curpos = 0, chunkSize = 500;
while (bytesread < byteSize)
{
    // chunkSize is an arbitrary application defined value 
    bytesread += _reader.GetBytes(_reader.GetOrdinal(sFieldName), curpos, imageData, curpos, chunkSize);
    curpos += chunkSize;
}

byte[] imgData = imageData;

MemoryStream ms = new MemoryStream(imgData);
Image oImage = Image.FromStream((Stream)ms);
return oImage;

代码在"Image oImage = Image.FromStream((Stream)ms);"行执行时产生问题.....此行显示"Parameter is not valid"消息.......为什么会出现?帮我。我想从数据库中检索图像....我在C#窗口vs05上工作.....任何人都可以帮助我吗? byte []包含值。一切正常,只有当这一行执行时才会出现问题。

2 个答案:

答案 0 :(得分:1)

简单的if语句应该在创建内存流之前解决您的问题

if (imageData.Length != 0)
{
  MemoryStream ms = new MemoryStream(imageData);
  Image oImage = Image.FromStream((Stream)ms);
  return oImage;
}

return null;

答案 1 :(得分:0)

我无法真正发现此代码中的任何错误(除了没有处理MemoryStream之外,并且在将其传递给Stream方法时没有必要将其强制转换为Image.FromStream;但是那些不应该导致你的错误)。为了试图找到错误,我会执行以下操作:

  • 将字节数据写入文件并尝试在图形程序中打开图像(以验证字节数据确实代表有效图像)。我的猜测是,这会失败。
  • 检查将数据写入数据库的代码(可能执行与上一点相同的技巧;将其写入文件并尝试打开文件)