使用C#标准类System.Drawing.Bitmap
构建图像并将其保存到System.IO.MemoryStream
。我有1497600个元素的字节数组作为源。每个阵列代表一个960x520像素矩阵,每个像素3个字节(每个通道一个:R,G,B)。我正在使用这个Bitmap
构造函数从中构建图像:
public Bitmap(
int width,
int height,
int stride,
PixelFormat format,
IntPtr scan0
)
这是我的代码:
var arrayHandle = GCHandle.Alloc(bmpBytes, GCHandleType.Pinned);
var bmp = new Bitmap(960, 520, 960 * 3, PixelFormat.Format24bppRgb, arrayHandle.AddrOfPinnedObject());
bmp.Save(memoryStream, ImageFormat.Bmp);
这是一个片段,每秒执行多次。 Bitmap
构造函数不是那么快,每次调用近14ms。我不能说,它非常慢,但是,例如,使用迭代器将像素阵列逐个复制到另一个阵列的速度快了近5倍。据我所知,BMP
文件只是一个带有小描述片段的像素数组,因此可能会加速该过程吗?