0

我知道我可以使用

string base64Encoded = ...; 
byte[] byteArray = Convert.FromBase64String(this.base64Encoded); // array size [31591]

var memoryStream = new MemoryStream(byteArray);
var bitmap = new Bitmap(memoryStream);
//byte[,] im = new byte[a.Width*a.Height,3]; 
// array size [891998, 3] - why this array is 90 times bigger?

但我想手动完成。

我真正需要的是知道如何从 byteArray 我可以创建 3dim 像素数组 [bitmap.width * bitmap.hight, 3 {Red,Green,Blue}]

4

1 回答 1

1

1- size ofbyteArray与 size of 不同,bitmap因为bitmap它实际上是一个没有标题的未压缩 24 位图像,而是byteArray一个压缩的(最有可能是 RLE)位图文件。

2-您可以使用 libbmp 或其他图像处理库来加载和操作像素。这些库在处理这类东西方面要好得多。

3-大多数位图使用 RLE 压缩进行压缩,位图是一种非常简单的格式。您实际上可以编写一个位图阅读器来将其读取到 Bitmap 对象的字节数组中。

于 2013-10-11T11:58:30.743 回答