`

在VC上实现如何从内存中读取JPEG、GIF等图像

阅读更多
本文来自http://blog.csdn.net/hellogv/

首先,本文适合那些由网络传输得到的JPEG、GIF图像显示,因为这些图像都是以“BYTE数组”这种形式传输。
    直接给出函数,不说废话了!
//-----------以下两句放在头文件定义的地方

#include "Gdiplus.h"

using namespace Gdiplus; 

//-----------以下代码修改一下变量为自己的变量,即刻使用

    void Readfrombuffer(char* video_data,int size)

{

                GdiplusStartupInput m_gdiPlusInPut;

                ULONG_PTR m_gdiPlusToken;

                GdiplusStartup( &m_gdiPlusToken, &m_gdiPlusInPut, NULL ); //初始化GDI+ 

		IPicture *pPic;

		IStream *pStm ; 

		//分配全局存储空间 

		HGLOBAL hGlobal=GlobalAlloc(GMEM_MOVEABLE,size);

		LPVOID pvData=NULL ;

		//锁定分配内存块 

		pvData=GlobalLock(hGlobal);

		//复制数据包video_data到pvData

		memcpy(pvData,video_data,size);

		GlobalUnlock(hGlobal);

		CreateStreamOnHGlobal(hGlobal,TRUE,&pStm);

		ULARGE_INTEGER        pSeek;       

		LARGE_INTEGER    dlibMove  ={  0  }  ;  

		pStm->Seek(dlibMove,STREAM_SEEK_SET  ,&pSeek);  

                Sleep(15);



		//装入图形文件

		if(FAILED(OleLoadPicture(pStm,size,TRUE,IID_IPicture,(LPVOID*)&pPic)))

		{//附:如果video_data这个数组包含的图像有错,则OleLoadPicture 容易产生读写内存错误

			pPic->Release();

			pStm->Release();

			return ;

		}



		Image img(pStm,0);

		Graphics mGraphics(GetDC(hwnd));

		mGraphics.DrawImage(&img, 0, 0, Video_Width, Video_Height);

		img.~Image();//会出错

		mGraphics.~Graphics();

		pPic->Release();

		pStm->Release();

               GdiplusShutdown(m_gdiPlusToken); //销毁GDI+

}
分享到:
评论

相关推荐

    VC-图像开发宝典JPEG\GIF

    例如,从这个压缩包中的03文件,我们可以推测这是一个编号为第三的图像处理程序,可能涉及到读取、操作和显示JPEG或GIF图像。 在VC中,处理JPEG图像通常会用到如libjpeg库,它提供了读写JPEG文件的接口。开发者需要...

    在VC下显示JPEG、GIF格式图像的一种简便方法.doc

    在VC++环境中,显示JPEG和GIF格式的图像通常需要额外的工作,因为MFC库默认只支持未经压缩的BMP位图。以下是一种利用COM接口和OLE技术在VC++下显示JPEG和GIF图像的简便方法。 首先,JPEG(Joint Photographic ...

    用vc实现显示bmp,jpg以及gif的动态显示

    本项目“用vc实现显示bmp,jpg以及gif的动态显示”着重解决了GIF动图在VC环境下的动态渲染问题。 首先,我们需要了解BMP、JPG和GIF的基本概念。BMP是微软公司开发的一种位图格式,无损压缩,存储的数据量大但色彩...

    VC打开多种图像格式(bmp,jpg,gif,tif,raw)

    在VC++ 6.0开发环境中,利用MFC(Microsoft Foundation Classes)库,可以实现对多种图像格式,如BMP、JPG、GIF、TIFF和RAW的支持。以下将详细讲解如何在VC++ 6.0中进行这些操作。 首先,你需要了解不同图像格式的...

    vc读入各种格式的图片

    5. 错误处理:在读取和显示图像时,必须处理可能出现的错误,例如文件不存在、内存不足、格式不支持等。使用异常处理机制来捕获和处理这些错误。 6. 性能优化:对于大量图像的读取,考虑使用异步加载或者预加载策略...

    VC下加载_JPG_JPEG__GIF_PNG_图片最简单的方法.txt

    在Visual C++ (VC) 开发环境中处理图像时,经常会遇到需要加载各种格式图片(如 JPG、JPEG、GIF 和 PNG)的需求。本文将详细介绍如何在 VC 下简单有效地加载这些格式的图片。 #### 1. 使用 `LoadBitmap` 和 `...

    在MFC程序中显示JPG-GIF图像

    在MFC(Microsoft Foundation Classes)程序中显示JPG和GIF图像是一项常见的需求,尤其是在开发图形用户界面的应用程序时。MFC是微软提供的一套C++类库,用于简化Windows应用程序的开发。以下将详细解释如何在MFC...

    VC数字图像处理源码

    在VC中,可以使用MFC或Qt等库创建GUI,实现图像预览、参数设置等功能。 9. **文件I/O操作**:处理图像时,需要读取和保存图像文件。理解二进制和文本文件的读写,以及如何使用内存映射文件提高大文件处理效率,都是...

    VC6.0编译读取保存png图

    如果一切正确,你应该能看到从磁盘读取的PNG图像在屏幕上显示,同时程序也能够保存用户所做的任何改变。 在实践中,你可能需要对这些基本步骤进行调整,以适应你的具体需求。例如,你可能需要处理颜色空间转换、...

    CImage类打开和保存jpeg、bmp、gif和png格式图片

    在Windows编程环境中,CImage类是一个非常实用的工具,它为开发者提供了方便的方式来处理和操作图像,特别是JPEG、BMP、GIF和PNG这四种常见的图像格式。CImage类是Microsoft ATL(Active Template Library)的一部分...

    VC图像处理系统应用

    在这个项目中,"bmp,jpeg,gif显示"意味着系统能够读取并显示这三种格式的图像。这通常涉及到文件读取、解码和在窗口上绘制的过程。例如,对于BMP,我们需要解析头部信息来获取图像宽度、高度和像素数据;JPEG和GIF...

    VC数字图像处理编程.doc

    《VC数字图像处理编程》是一份深入探讨使用Visual C++(VC)进行数字图像处理的教程,涵盖了从基础知识到高级技术的多个方面。数字图像处理是计算机科学中的一个重要分支,它涉及图像信息的获取、存储、显示、分析和...

    程序中显示JPG或GIF图像文件示例

    在编程领域,尤其是在开发图形用户界面(GUI)的应用程序时,常常需要在程序中集成图像显示功能,以增强用户体验或实现特定的可视化需求。在这个示例中,我们关注的是如何在MFC(Microsoft Foundation Classes)框架...

    gif添加代码gif添加代码

    使用 VC6.0 实现 GIF 图片的显示 本文将介绍使用 VC6.0 实现 GIF 图片的显示,包括设计思路、实现步骤和相关代码。 一、引言 JPEG 图像压缩标准是一种...通过这种方法,我们可以在 VC6.0 中实现 GIF 图片的显示。

    VC图像处理

    - 图像格式:常见的图像文件格式有BMP、JPEG、PNG、GIF等,每种格式都有其特点和适用场景。 2. 图像获取: - 数码相机和扫描仪:通过硬件设备获取图像,可以通过VC接口与这些设备交互,读取图像数据。 - 屏幕...

Global site tag (gtag.js) - Google Analytics