首页 > 解决方案 > 使用编组时来自字节数组的图像创建错误图像

问题描述

我正在尝试将字节数组转换为图像。为了测试,我从这张图片开始:

在此处输入图像描述

然后我将它加载到一个字节数组中:

byte[] imageData = File.ReadAllBytes("download.png");

然后我创建新的位图以将此字节数组“存放”到:

Bitmap bmp = new Bitmap(704, 480, PixelFormat.Format24bppRgb);

nb 高度和宽度与原始图像相同。

然后我创建一个 BitmapData 并锁定所有要写入的像素:

BitmapData bmpData = bmp.LockBits(
                new Rectangle(0, 0, bmp.Width, bmp.Height),
                ImageLockMode.ReadWrite, bmp.PixelFormat);

然后我将字节数组中的数据复制到 BitmapData.Scan0 中:

Marshal.Copy(imageData, 0, bmpData.Scan0, imageData.Length);

然后我解锁像素:

bmp.UnlockBits(bmpData);

然后我终于将它保存到一个文件中:

bmp.Save("D:\\test.png");

保存的文件如下所示:

在此处输入图像描述

标签: c#image-processingmarshallingbitmapdata

解决方案


推荐阅读