C# 用c语言进行图像检索# byte[]imageData=null; 长字节大小=0; byteSize=_reader.GetBytes(_reader.GetOrdinal(sFieldName),0,null,0,0); imageData=新字节[字节大小]; 长字节读取=0; int curpos=0,chunkSize=500; while(字节读取
当C# 用c语言进行图像检索# byte[]imageData=null; 长字节大小=0; byteSize=_reader.GetBytes(_reader.GetOrdinal(sFieldName),0,null,0,0); imageData=新字节[字节大小]; 长字节读取=0; int curpos=0,chunkSize=500; while(字节读取,c#,image,stream,C#,Image,Stream,当“Image oImage=Image.FromStream((Stream)ms);”行执行时,代码会产生问题。……此行显示“参数无效”消息……。为什么会出现这种情况?帮助我。我想从数据库中检索图像…我在C#window vs05上工作…有人能帮我吗?字节[]包含值。这一切都很好,只是在执行这一行时出现了问题。在创建内存流之前,一个简单的if语句应该可以解决您的问题 byte[] imageData = null; long byteSize = 0; byteSize = _reader.
“Image oImage=Image.FromStream((Stream)ms);”
行执行时,代码会产生问题。……此行显示“参数无效”
消息……。为什么会出现这种情况?帮助我。我想从数据库中检索图像…我在C#window vs05上工作…有人能帮我吗?字节[]包含值。这一切都很好,只是在执行这一行时出现了问题。在创建内存流之前,一个简单的if语句应该可以解决您的问题
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.FromStream
方法时没有必要将它强制转换到流中;但是这些不会导致您的错误)。为了找到错误,我将执行以下操作:
- 将字节数据写入文件,并尝试在图形程序中打开图像(以验证字节数据确实代表有效图像)。我猜这会失败
- 检查将数据写入数据库的代码(可能执行与前一点相同的技巧;将其写入文件并尝试打开该文件)
是否已验证字节数组确实包含数据?
if (imageData.Length != 0)
{
MemoryStream ms = new MemoryStream(imageData);
Image oImage = Image.FromStream((Stream)ms);
return oImage;
}
return null;