这是我目前在我的应用程序中加载图像的方法:
auto b = ::FreeImage_Load(type, path.c_str());
void *bits;
auto hbmp = CreateDIBSection(
dc,
FreeImage_GetInfo(bitmap),
DIB_RGB_COLORS,
&bits,
0,
0
);
std::memcpy(bits, FreeImage_GetBits(b), size);
它工作得很好,但我想避免两次分配内存 -::FreeImage_Load
已经以适合 dib 的方式存储数据。有没有一种调用方式CreateDIBSection
可以阻止分配并强制以这种方式创建的 dib 使用我提供的缓冲区?如果没有,是否有另一种方法可以做到这一点?
似乎提供NULL
而不是**ppvBits
阻止分配 - 以后有没有办法修改缓冲区地址?我也尝试过修改hSection
参数,但以这种方式创建的 dib 不正确。