在VC编程中,通常会对已有图片进行缩放,然后,需要把缩放后的图片(gdiplus::Bitmap)以二进制形式保存至内存中,再进行其它处理,如:将内存中二进制内容保存至数据库或传递给其它处理模块。
有两种方式把Bitmap对象中图片保存至内存:
1. 先将Bitmap对象中的图片以指定格式保存至本地文件,再从本地文件读取至内存块
代码如下:
BYTE* Convert(Bitmap *pBitmap)
{
// 默认保存为png格式
CLSID clsid;
GetImageCLSID(_T("image/png"), &clsid);
// 临时文件
CString csTempPath = _T("C:\\temp.png");
// 先保存再读取至内存
pBitmap->Save(csTempPath, &clsid);
CFile fileRead(csTempPath, CFile::modeRead);
int iLength = fileRead.GetLength();
BYTE *pbyteBuf = new BYTE[iLength];
fileRead.Read(pbyteBuf, iLength);
fileRead.Close();
// 删除临时文件
DeleteFile(csTempPath);
return pbyteBuf;
}
// 获取图片的clsid
int CGenerateThumbnail::GetImageCLSID(const WCHAR* format, CLSID* pCLSID)
{
UINT num = 0;
UINT size &