System.Drawing.Bitmap构造函数

时间:2016-07-21 12:10:14

标签: c# performance image-processing bitmap bytearray

使用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文件只是一个带有小描述片段的像素数组,因此可能会加速该过程吗?

0 个答案:

没有答案