массив ByteArray в MemoryStream - PullRequest
       30

массив ByteArray в MemoryStream

3 голосов
/ 25 октября 2010

У меня есть метод, который возвращает массив ByteArray:

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

, и мне нужно записать его в MemoryStream:

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

Пока это работает, потому чтомассив byteArray всегда содержит только один элемент.Кто-нибудь сможет указать и дать решение: что произойдет, если массив byteArray имеет более одного элемента?

Я думаю, с текущим кодом я все равно взял бы первый элемент byteArray и отбросилостальное, но мне нужно MemoryStream и он не может принимать многомерный массив.

Ответы [ 2 ]

1 голос
/ 25 октября 2010

Вам придется зациклить и написать что-то вроде этого:

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

(я не уверен, что он работает как есть, возможно, вам придется его настроить, но это принцип)

0 голосов
/ 25 октября 2010

Как вы упомянули, только первый элемент в позиции [0] будет использоваться потоком памяти.Поскольку поток памяти по своей структуре последовательный, вам необходим цикл для выравнивания массива массивов и помещения его в поток памяти.В качестве второго взгляда на ваш код я предлагаю изменить ваш Draw() метод для создания линейной структуры данных, а не двумерной (массив массива), если вам не нужен такой тип структуры данных где-либо еще в вашем коде.

...