2009-05-20 14 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; 

-Code erzeugt Problem, wenn "Image oImage = Image.FromStream((Stream)ms);" Linie führt ..... Diese Linie "Parameter is not valid" Nachricht zeigt ....... Warum es auftritt? Hilf mir. Ich möchte Bild aus der Datenbank abrufen .... Ich arbeite an C# window vs05 ..... Kann mir jemand helfen? Byte [] enthält Wert. Alles funktioniert gut, nur ein Problem tritt auf, wenn diese Zeile ausgeführt wird.Bild abrufen C#

+0

Haben Sie Ihr Nachweis erbracht, dass die Byte-Array tut enthalten tatsächlich Daten? –

Antwort

1

Eine einfache if-Anweisung Ihr Problem vor dem Erstellen des Speicherstrom

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

return null; 
0

Ich kann nicht wirklich Fehler in diesem Code (außer dem Memory nicht angeordnet ist, und dass es nicht notwendig, vor Ort lösen sollte Wirf es auf Stream, wenn du es an die Image.FromStream Methode übergibst, aber das sollte deinen Fehler nicht verursachen). Ich würde die folgenden Schritte aus, um zu versuchen, den Fehler zu finden:

  • die Byte-Daten in eine Datei schreiben und versuchen, das Bild in einem Grafikprogramm zu öffnen (um sicherzustellen, dass die Byte-Daten stellen in der Tat ein gültiges Bild). Ich schätze, das würde scheitern.
  • Überprüfen Sie den Code, der die Daten in die Datenbank (vielleicht führen den gleichen Trick wie im vorherigen Punkt, schreiben sie in eine Datei und versuchen, die Datei zu öffnen) schreibt