2016-04-22 29 views
0

Ich muss eine byte[] in eine Image konvertieren, aber ich kann es nicht in C# arbeiten. Wenn ich die bytearray zu einer Datei wie folgt speichern:C# ByteArray zu Image

using (System.IO.FileStream fs = System.IO.File.Create("test.jpg")) 
{ 
    fs.Write(bytearray, 0, (int)lenght); 
    fs.Close(); 
} 

Und test.jpg zeigt richtig. Aber wenn ich versuche, Bild aus dem Bytearray wie folgt zu machen:

Es zeigt nur Blackbox.

+0

Code sieht gut aus für mich. Können Sie bestätigen, dass das Byte-Array, das in ein Bild konvertiert wird, die gleiche Länge hat, bevor es in einer Datei gespeichert wurde? –

+0

Können Sie bitte den gesamten Code posten, den Sie verwenden, um das Bild an der PictureBox zu laden? – Ismael

+0

Ich mache tatsächlich das Bild aus dem Array vor dem Speichern in eine Datei. 'code'test'code' – TomCrow

Antwort

0

Ich vermute ein Problem ist, da Sie test.jpg erstellen, es hat keine Daten und so ist das Bytearray leer.

Sie so etwas wie: -

  byte[] fileData = null; 
      using (var fs = new FileStream("C:\\1\\roses.jpg", FileMode.Open, FileAccess.Read)) 
       { 
       var totalLength = (int)fs.Length; 
       using (var binaryReader = new BinaryReader(fs)) 
        { 
        fileData = new byte[totalLength]; 
        fs.Read(fileData, 0, totalLength); 
        fs.Close(); 
        } 
       MemoryStream ms = new MemoryStream(fileData); 
       pictureBox1.Image = Image.FromStream(ms); 
       } 
+0

OP sagt Bild spart gut, aber zeigt eine schwarze Box auf einem Formular. Also ich denke, da sind die Daten in 'Bytearray' schon. –

+0

Ja, das Bild spart gut. Das Bytearray ist nicht leer. – TomCrow

+0

Was ich gesehen habe, ist, dass, wenn ich versuche, eine PNG-Datei zu lesen, die Daten in Bytearray nicht Null sind. Aber wenn ich versuche, eine JPG-Datei zu lesen, sind die Dateidaten alle 0, daher gibt die letzte Zeile in meinem Code eine Ausnahme aus. Können Sie überprüfen, ob Sie Daten in Bytearray erhalten, die nicht Null sind? Sie können eine Blackbox wegen Nulldaten erhalten. Können Sie den Inhalt Ihres Byte-Arrays bestätigen? – user2224280

0

Okay, mein schlecht war. Der Code ist korrekt, aber der Grund, warum es nur schwarzen Bildschirm zeigte, war, weil das Bild so groß war und es in den Ecken schwarz war. Und die BildBox hat die Größe nicht geändert oder irgendetwas, so dass es nur die obere rechte Ecke zeigte.