MFC加密Base64编码的图片,并显示

base64解码的图像buff可以在MFC中显示。

源码

	std::string str;
	CString text;
	CString imgbuf="";
	//CString str;
	int s=m_Combo1.GetCurSel();
	m_Combo1.GetLBText(s,text);
	s=atoi(text);
	int i=-100;
	str=m_Ctrl.createImage(s);
	Json::Reader reader;
	Json::Value val;
	if(reader.parse(str,val)){
		i=val["resultFlag"].asInt();
	}
	if(i==0)
	{
		
		imgbuf=val["image"].asCString();
		int len = imgbuf.GetLength();
		/*CFile fp;
		fp.Open("D:\\1.TXT",CFile::modeCreate|CFile::modeReadWrite,NULL);
		fp.Write(imgbuf,len);
		fp.Close();*/
		
		char *dv = new char[len];
		
 
		Base64decode(dv,imgbuf);
		HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, len);
		if(hGlobal==NULL)
		{
			MessageBox("NULL");		
			return;
        
		}
		void *  pData =(char*) GlobalLock(hGlobal);
		
        memcpy(pData, dv, len);  //  拷贝位图数据进去
      // pData = dv;
		GlobalUnlock(hGlobal);
		IStream *  pStream = NULL;
        if (CreateStreamOnHGlobal(hGlobal, TRUE, &pStream) != S_OK)	return ;
		
		CImage img;
		img.Load(pStream);
		if (img.IsNull())
        {
			MessageBox("cc");
		}
		else
		{
			CStatic *idc_photo=(CStatic*)GetDlgItem(IDC_PIC1);
			CRect m_picRect;
			idc_photo->GetClientRect(&m_picRect);
			CDC* cd = idc_photo->GetWindowDC();
			
			
			int width = img.GetWidth();
			int height = img.GetHeight();
			SetStretchBltMode(cd->m_hDC, HALFTONE);
			img.Draw(cd->m_hDC, m_picRect);
			//img.Draw(cd->m_hDC, 0, 0, 500, 300); 
			ReleaseDC(cd);
			CFile fp;
			fp.Open("D:\\1.jpg",CFile::modeCreate|CFile::modeReadWrite,NULL);
			fp.Write(dv,len);
			fp.Close();

            
       }
        
        pStream->Release();
        GlobalFree(hGlobal);
		delete []dv;
		m_text="拍摄完成";
		UpdateData(false);

转载自:http://www.3fwork.com/b201/001832MYM026499/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值