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 数组只有一个元素。有人可以指出并提供解决方案:如果 byteArray 的数组有多个元素会发生什么?

我想使用当前代码我仍然会采用 byteArray 的第一个元素并丢弃其余的元素,但我需要MemoryStream并且它不能采用多维数组。

4

2 回答 2

1

iYou 将不得不循环和编写,如下所示:

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()作为对您的代码的第二次查看,如果您在代码中的其他任何地方不需要这种类型的数据结构,我建议更改您的方法以生成线性数据结构而不是二维(数组数组)。

于 2010-10-24T21:42:15.470 回答