最近在做远程视频监控项目,接触较多图片处理方面问题,作为学习做以下记录:
一、截图默认 bmp 格式转 jpg 压缩。
采用 jpglib 库去实现。
二、jpg 图片接收后 MFC 显示(四种方式)
MFC 提供的 CWnd 只有默认加载 BMP 文件的接口,对 JPG 等图像是不支持的,而实际中经常需要用到
非 BMP 的图片,在 VC 中加载.JPG 格式的图片,有四种方法,
1.用流对象加载。
IPicture*m_picture;
OLE_XSIZE_HIMETRICm_width;
OLE_YSIZE_HIMETRICm_height;
CStringm_filename("D:\009.jpg");//文件名
CFilem_file(m_filename,CFile::modeRead);
//获取文件长度
DWORDm_filelen=m_file.GetLength();
//在堆上分配空间
HGLOBALm_hglobal=GlobalAlloc(GMEM_MOVEABLE,m_filelen);
LPVOIDpvdata=NULL;
//锁定堆空间,获取指向堆空间的指针
pvdata=GlobalLock(m_hglobal);
//将文件数据读区到堆中
m_file.ReadHuge(pvdata,m_filelen);
IStream*m_stream;
GlobalUnlock(m_hglobal);
//在堆中创建流对象
CreateStreamOnHGlobal(m_hglobal,TRUE,&m_stream);
//利用流加载图像
OleLoadPicture(m_stream,m_filelen,TRUE,IID_IPicture,(LPVOID*)&m_picture);
m_picture->get_Width(&m_width);
m_picture->get_Height(&m_height);