2009-05-20 4 views
0
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# window vs05 .....에 대한 작업 중 하나가 도와 줄 수 있습니까? byte [] 값을 포함합니다. 모든 것이 잘 작동하지만이 줄이 실행될 때 문제가 발생합니다.이미지 검색은 C#

+0

당신 되세요 바이트 배열이하는 것을 확인 실제로 데이터가 포함되어 있습니까? –

답변

1

간단한 문장은 정말 배치되지 MemoryStream을 이외의 코드 (에서 오류를 발견 할 수

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

return null; 
0

메모리 스트림을 생성하기 전에 문제를 해결해야하고, 그것을 할 필요가 아니라고 경우 Image.FromStream 메서드로 전달할 때 Stream으로 전송하면 오류가 발생하지 않습니다. 오류를 찾기 위해 다음을 수행합니다.

  • 바이트 데이터를 파일에 쓰고 그래픽 프로그램에서 이미지를 열어 봅니다 (바이트 데이터가 실제로 유효한 이미지를 나타내는 지 확인하기 위해).). 내 추측은 이것이 실패 할 것이라는 것이다.
  • 확인 데이터베이스에 데이터를 기록하는 코드는 (아마도 이전 점에서와 같은 트릭을 수행, 파일에 기록하고 파일을 열려고)
관련 문제