3

ByteArrayの配列を返すメソッドがあります。

public byte[][] Draw(ImageFormat imageFormat, ImageSize imageSize);

MemoryStreamそして私はそれを:に書く必要があります

var byteArray = instanceName.Draw(ImageFormat.Jpeg, ImageSize.Dpi150);
MemoryStream ms = new MemoryStream(byteArray[0]);

byteArrayの配列には要素が1つしかないため、これはこれまでのところ機能しています。誰かが指摘して解決策を提供できるでしょうか:byteArrayの配列に複数の要素がある場合はどうなりますか?

現在のコードでは、byteArrayの最初の要素を取得して残りを破棄すると思いますが、必要MemoryStreamであり、多次元配列を取得することはできません。

4

2 に答える 2

1

iループして次のように記述する必要があります。

var ms = new MemoryStream();
for(var i=0; i < byteArray.Length; i++)
  ms.Write(byteArray[i], 0, byteArray[i].Length);

(そのままで動くかはわかりません、調整が必要かもしれませんが、それが原則です)

于 2010-10-24T21:39:16.587 に答える
0

あなたが言及したように、[0] 位置の最初の要素のみがメモリ ストリームによって使用されます。メモリ ストリームは設計上シーケンシャルであるため、配列の配列をフラットにしてメモリ ストリームに入れるループが必要です。Draw()コードをもう一度見てみると、コードの他の場所でこのタイプのデータ構造が必要ない場合は、2 次元 (配列の配列) ではなく線形データ構造を生成するようにメソッドを変更することをお勧めします。

于 2010-10-24T21:42:15.470 に答える