将任何图像转换为DIB的内存效率最高的方法是什么?

时间:2014-02-28 13:41:57

标签: c++ winapi gdi+ dib

在我的应用程序中,我必须将图像(图像可以是任何格式 - PNG,JPEG,BMP等)转换为DIB。

这就是我现在正在做的事情,

  1. 使用GlobalAlloc(GHND,0)
  2. 创建可移动的全局内存
  3. 使用CreateStreamOnHGlobal()API
  4. 在此全局内存上创建流
  5. 使用BITMAP编码器
  6. 将给定图像保存到流中
  7. 然后我创建另一个缓冲区并将内容从全局内存复制到新创建的缓冲区,跳过位图文件头。 这使新分配的缓冲区成为DIB数据
  8. 最后使用GlobalFree()释放全局内存并释放流。
  9. 我在这里不舒服的是,这里分配了大量内存来将图像转换为DIB。我想知道是否有任何其他方法可以使用最少量的内存分配和解除分配来实现这一点。

0 个答案:

没有答案