在我的应用程序中,我必须将图像(图像可以是任何格式 - PNG、JPEG、BMP 等)转换为 DIB。
这就是我现在正在做的,
- 使用 GlobalAlloc(GHND,0) 创建一个可移动的全局内存
- 使用 CreateStreamOnHGlobal() API 在这个全局内存上创建一个流
- 使用 BITMAP 的编码器将给定的图像保存到流中
- 然后我创建另一个缓冲区并将内容从全局内存复制到新创建的缓冲区,跳过位图文件头。 这使得新分配的缓冲区成为 DIB 数据
- 最后使用 GlobalFree() 释放全局内存并释放流。
我在这里感到不舒服的是,这里分配了很多内存来将图像转换为 DIB。我想知道是否有任何其他方法可以仅使用最少的内存分配和取消分配来实现这一目标。