18

私は本当にそれを理解していません、そしてそれは私を狂わせています。私はこれらの4行を持っています:

Image img = Image.FromFile("F:\\Pulpit\\soa.bmp");
MemoryStream imageStream = new MemoryStream();
img.Save(imageStream, ImageFormat.Bmp);
byte[] contentBuffer = new byte[imageStream.Length];
imageStream.Read(contentBuffer, 0, contentBuffer.Length);

デバッグするとき、私はimageStreamのバイト値を見ることができます。imageStream.Readの後、contentBufferの内容を確認すると、255個の値しか表示されません。なぜそれが起こっているのか分かりませんか?これらの数行で何も悪いことはありません!誰かが私を助けることができればそれは大いにありがたいです!ありがとう、agnieszka

4

5 に答える 5

41

imageStream.Position を 0 に設定してみてください。MemoryStream に書き込むと、ちょうど書き込んだバイトの後に位置が移動するため、読み取ろうとするとそこには何もありません。

于 2008-12-17T21:57:22.087 に答える
26

ファイルポインタをリセットする必要があります。

imageStream.Seek( 0, SeekOrigin.Begin );

それ以外の場合は、ストリームの最後から読んでいます。

于 2008-12-17T21:56:03.290 に答える
13

追加:

imageStream.Position = 0;

直前:

imageStream.Read(contentBuffer, 0, contentBuffer.Length);

読み取り命令の0は、ストリームの開始ではなく、メモリストリームの現在の位置からのオフセットを表します。ストリームがロードされた後、位置は最後になります。最初にリセットする必要があります。

于 2008-12-17T22:00:54.670 に答える
8
Image img = Image.FromFile("F:\\Pulpit\\soa.bmp");
MemoryStream imageStream = new MemoryStream();
img.Save(imageStream, ImageFormat.Bmp);
byte[] contentBuffer = new byte[imageStream.Length];
imageStream.Position = 0;//Reset the position at the start
imageStream.Read(contentBuffer, 0, contentBuffer.Length);
于 2008-12-17T22:04:12.137 に答える
5

使うだけ

imageStream.ToArray()

それは機能し、簡単です。

于 2010-10-17T21:47:48.950 に答える