MemoryStream ms = new MemoryStream(); b.Save(ms, ImageFormat.Bmp); byte[] byte_h = new byte[54]; Array.ConstrainedCopy(ms.GetBuffer(), 0, byte_h, 0, 54); int data_start = BitConverter.ToInt32(byte_h, 0x0a); data_width = BitConverter.ToInt32(byte_h, 0x12); data_height = BitConverter.ToInt32(byte_h, 0x16); byte[] byte_data = new byte[data_height * data_width * 3]; Array.ConstrainedCopy(ms.GetBuffer(), data_start, byte_data, 0, data_width * data_height * 3); img = Image.FromStream(ms, true); ms.Close(); ms.Dispose(); return byte_data;
时间: 2024-04-27 22:19:32 浏览: 171
这段代码实现了将一个 Bitmap 对象转换为 byte 数组的功能。具体来说,代码首先创建了一个 MemoryStream 对象 ms,然后通过 Bitmap 对象 b 的 Save 方法将其保存为 BMP 格式的图片并写入到 ms 中。接着,代码创建了一个长度为 54 的 byte 数组 byte_h,并将 ms 中前 54 个字节(即 BMP 头信息)复制到 byte_h 中。通过解析 BMP 头信息,代码获取了图片数据的起始位置、宽度和高度等信息。然后,代码根据这些信息创建了一个长度为 data_height * data_width * 3 的 byte 数组 byte_data,并将 ms 中从数据起始位置开始到数据结束位置(即图片数据)的字节复制到 byte_data 中。最后,代码通过 FromStream 方法将 ms 中的数据转换为 Image 对象,释放 ms 对象并返回 byte_data 数组。
阅读全文