2016-04-22 9 views
0

byte[]Imageに変換する必要がありますが、C#で動作させることはできません。私はこのようなファイルにbytearrayを保存する場合:C#ByteArray to Image

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

そしてtest.jpg適切に示しています。しかし、このようにBytearrayからImageを作成しようとすると、

MemoryStream ms = new MemoryStream(bytearray); 
pictureBox1.Image = Image.FromStream(ms); 

ブラックボックスのみが表示されます。

+0

コードは私によく見えます。ファイルに保存する前に、イメージに変換されるバイト配列の長さが同じであることを確認できますか? –

+0

PictureBoxで画像を読み込むために使用しているコードをすべて投稿してください。 – Ismael

+0

実際にファイルに保存する前に、イメージを配列から作成しています。 'code'test'code' – TomCrow

答えて

0

test.jpgを作成しているので、データがないため、bytearrayが空です。

ような何か: -

  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は画像を保存してもフォーム上に黒いボックスを表示します。ですから、すでにbytearrayにデータがあると思います。 –

+0

さて、画像はうまく保存されます。 bytearrayは空ではありません。 – TomCrow

+0

私が見たことは、.pngファイルを読み込もうとすると、bytearrayのデータはゼロではないということです。しかし、私が.jpgファイルを読み込もうとすると、ファイルデータはすべて0なので、最後の行で例外がスローされます。 bytearrayでゼロ以外のデータが得られていることを確認できますか? データがないため、ブラックボックスになることがあります。バイト配列の内容を確認できますか? – user2224280

0

さて、すべては私の悪いだったが。コードは正しいですが、黒い画面のみを表示していたのは、画像が非常に大きく、コーナーで黒くなっていたためです。そしてpictureBoxはそれのサイズを変更していなかったので、それは右上隅のみを示していました。