VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 596|回复: 3

请问如何显示接收到的一贞jpg数据,不解码能否直接显示出来,或者用什么库能直接从数据

[复制链接]

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-2-11 13:00:01 | 显示全部楼层 |阅读模式
请问如何显示接收到的一贞jpg数据,不解码能否直接显示出来,或者用什么库能直接从数据显示?
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-4-7 21:00:01 | 显示全部楼层
HRESULT CMySocket::ShowPicBuffer(char *lpstr,int nScrWidth,int nScrHeight,long dwFileSize)
{
        HDC hDC_Temp=GetDC((CWnd *)AfxGetMainWnd()->m_hWnd);

        IPicture *pPic;
        IStream *pStm;

        BOOL bResult;
        //分配全局存储空间
        HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
        LPVOID pvData = NULL;

        if (hGlobal == NULL)
        return E_FAIL;

        if ((pvData = GlobalLock(hGlobal)) == NULL)//锁定分配内存块
        return E_FAIL;

        memcpy(pvData,lpstr,dwFileSize);

        GlobalUnlock(hGlobal);

        CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);

        //装入图形文件

        bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic);

        if(FAILED(bResult))
        return E_FAIL;

        OLE_XSIZE_HIMETRIC hmWidth;//图片的真实宽度
        OLE_YSIZE_HIMETRIC hmHeight;//图片的真实高度
        pPic->get_Width(&hmWidth);
        pPic->get_Height(&hmHeight);

        //将图形输出到屏幕上(有点像BitBlt)
        bResult=pPic->Render(hDC_Temp,0,0,nScrWidth,nScrHeight,0,hmHeight,hmWidth,-hmHeight,NULL);

        pPic->Release();

        if (SUCCEEDED(bResult))
        {
                return S_OK;
        }
        else
        {
                return E_FAIL;
        }
}
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-5-7 19:45:01 | 显示全部楼层
试了一下
pPic->get_Width(&hmWidth);得到的图像长,宽不对,比原图像大了好几倍,显示的图像也只是图像的一小部分。????
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-5-18 11:00:01 | 显示全部楼层
谢谢smartwang
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表