c++ 保存bmp
时间: 2023-07-01 09:22:06 浏览: 45
要在C++中保存 BMP 格式的图像,可以使用 Windows API 中的 GDI+ 类库。下面是一段示例代码:
```c++
#include <Windows.h>
#include <gdiplus.h>
#pragma comment(lib, "gdiplus.lib")
void SaveBitmapToFile(HBITMAP hBitmap, LPCTSTR szFileName)
{
Gdiplus::Bitmap* pBitmap = Gdiplus::Bitmap::FromHBITMAP(hBitmap, NULL);
CLSID clsidEncoder;
GetEncoderClsid(L"image/bmp", &clsidEncoder);
pBitmap->Save(szFileName, &clsidEncoder, NULL);
delete pBitmap;
}
void GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
UINT num = 0;
UINT size = 0;
Gdiplus::ImageCodecInfo* pImageCodecInfo = NULL;
Gdiplus::GetImageEncodersSize(&num, &size);
if (size == 0) return;
pImageCodecInfo = (Gdiplus::ImageCodecInfo*)(malloc(size));
if (pImageCodecInfo == NULL) return;
Gdiplus::GetImageEncoders(num, size, pImageCodecInfo);
for (UINT i = 0; i < num; ++i)
{
if (wcscmp(pImageCodecInfo[i].MimeType, format) == 0)
{
*pClsid = pImageCodecInfo[i].Clsid;
break;
}
}
free(pImageCodecInfo);
}
```
使用方法:
```c++
HBITMAP hBitmap = ...; // 获取位图句柄
SaveBitmapToFile(hBitmap, L"test.bmp"); // 保存为 BMP 文件
```