把Bitmap中的图片保存至内存块

在VC编程中,经常需要将缩放后的Bitmap图像保存为二进制形式存储到内存,以供进一步处理,如存入数据库或传递给其他模块。本文介绍了两种方法:1)通过临时文件转换;2)利用COleStreamFile直接转换。虽然方式1在小文件时速度较快,但依赖硬盘,易出问题。相比之下,方式2仅使用内存,更稳定。因此建议使用方式2进行转换。
摘要由CSDN通过智能技术生成

在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 &
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值