Base64编码手动转换为位图

本文关键字:位图 转换 编码 Base64 | 更新日期: 2023-09-27 18:35:00

我知道我可以使用

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 {红色,绿色,蓝色}]

Base64编码手动转换为位图

1-byteArray的大小与bitmap的大小不同,因为bitmap实际上是没有标头的未压缩的24位图像,但byteArray是压缩的(RLE很可能(位图文件。

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

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