如何从 Gdiplus::Bitmap 快速复制数据

Posted

技术标签:

【中文标题】如何从 Gdiplus::Bitmap 快速复制数据【英文标题】:How to quickly copy data from Gdiplus::Bitmap 【发布时间】:2013-08-07 11:00:14 【问题描述】:

我有一个 Gdiplus::Bitmap 对象。这是已知宽度和高度的灰度图像。我想要做的是将它的内容加载到二维数组中,比如

char image[width][height]

我需要 Gdiplus::Bitmap(在 Winapi 窗口中渲染)和 char 数组(执行大量图像过滤并且相对较快)。我考虑了一些选择:

    遍历 Gdiplus::Bitmap,逐像素加载数据 使用新的 Gdiplus::Bitmap(filename) 加载 Gdiplus::Bitmap,但使用其他库将图像从同一文件加载到我的数组中 根本不使用 Gdiplus,而是使用其他东西来渲染和对图像执行过滤。不幸的是,我不知道是否有比 Gdiplus 更好的在 Winapi 窗口中渲染图像的方法

最好的方法是什么?

【问题讨论】:

【参考方案1】:

如果您使用例如this constructor 或this constructor,那么您仍然可以控制原始像素数据,并且可以随意更改。

更改像素数据后,使用位图重绘即可。

【讨论】:

所以,使用第二个构造函数我得到了类似 Bitmap(width, height, width * 8, PixelFormat8bppIndexed, my_array) 的东西,并且为了将数据加载到数组中,我使用了一些快速的 jpeg 库?

以上是关于如何从 Gdiplus::Bitmap 快速复制数据的主要内容,如果未能解决你的问题,请参考以下文章

保存的 Gdiplus::Bitmap 始终具有 Alpha 通道 (RGBA/ARGB)

为啥我的 Gdiplus::Bitmap 不能保存文件

Gdiplus :: Bitmap到BYTE数组?

SQLSERVER中如何快速比较两张表的不一样

如何在 Hadoop 中计数? [复制]

如何从网络复制 facebook 照片视图并快速显示照片