【问题标题】:Image Retrieve using c#使用 c# 检索图像
【发布时间】:2009-05-20 06:44:28
【问题描述】:
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[] 包含值。一切正常,只是在执行此行时出现问题。

【问题讨论】:

  • 您确认字节数组确实包含数据吗?

标签: c# image stream


【解决方案1】:

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

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

return null;

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      • 2021-10-06
      • 2013-03-13
      • 2012-10-05
      • 2011-03-21
      • 2019-11-07
      相关资源
      最近更新 更多