如何截取屏幕图片并把它在内存中转化成jpg
来源:互联网 发布:遗传算法应用生活实例 编辑:程序博客网 时间:2024/05/17 11:58
// 截取屏幕图片
CDC dc ;
dc .CreateDC ("DISPLAY",NULL ,NULL ,NULL ); // 创建设备描述表
CBitmap bm ;
int Width = GetSystemMetrics (SM_CXSCREEN );// 得到屏幕的宽
int Height = GetSystemMetrics (SM_CYSCREEN );// 得到屏幕的高
bm .CreateCompatibleBitmap (&dc ,Width ,Height );// 创建与屏幕设备描述表兼容位图
CDC tdc ;
// 与设备描述表兼容的内存设备描述表
tdc .CreateCompatibleDC (&dc );
CBitmap *pOld = tdc .SelectObject (&bm );
// 设备描述表拷贝到内存设备描述表中
tdc .BitBlt (0,0,Width ,Height ,&dc ,0,0,SRCCOPY );
tdc .SelectObject (pOld );
bm .GetBitmap (&btm );
// 压缩转化成jpg 格式
HBITMAP m_hBmp = (HBITMAP )bm .GetSafeHandle ();
CImage m_image ;
m_image .Attach (m_hBmp ); // 绑定到m_hBmp
IStream * pStmImage = NULL ;
HGLOBAL hMemBmp = GlobalAlloc (GMEM_MOVEABLE ,0);// 分配一块默认堆,返回一块内存对象句柄
if (hMemBmp == NULL )
return ;
CreateStreamOnHGlobal (hMemBmp , FALSE , &pStmImage ); // 将内存区作为流的起始
if (pStmImage == NULL )
{
GlobalFree (hMemBmp );
AfxMessageBox ( " 为空 ");
return ;
}
m_image .Save (pStmImage ,Gdiplus ::ImageFormatJPEG );// 以jpg格式保存
BYTE * pbyBmp = (BYTE *)GlobalLock (hMemBmp );// 把一个内存对象句柄转化成一个指针
int msize = GlobalSize (hMemBmp );
BYTE * bdata = new BYTE [msize ]; // 申请数据空间
memcpy (bdata ,pbyBmp ,msize ); // 得到文件的数据
// 这时就可以把bdata中的数据保存到文件中了
// 释放空间
if ( bdata != NULL )
{
delete []bdata ;
bdata = NULL ;
}
// 释放流
if (pStmImage != NULL )
{
pStmImage -> Release ();
pStmImage = NULL ;
}
// 释放堆空间
if (hMemBmp != NULL )
{
GlobalUnlock (hMemBmp );
GlobalFree (hMemBmp );
hMemBmp = NULL ;
}
if (m_image )
{
m_image .Detach ();
m_image .Destroy ();
}
::DeleteObject (m_hBmp );
- 如何截取屏幕图片并把它在内存中转化成jpg
- 使用GDI+在内存中转换图片类型
- 使用GDI+在内存中转换图片类型
- 使用GDI+在内存中转换图片类型
- 使用GDI+在内存中转换图片类型
- 使用GDI+在内存中转换图片类型
- 如何截取屏幕图片
- iPhone 截取屏幕图片
- 截取屏幕图片
- 截取屏幕图片
- Xcode屏幕图片截取
- iOS 如何截取超出屏幕区域的图片
- 如何使用glide在加载成功图片时,截取屏幕
- 如何进行屏幕截取
- jmagick 在内存中生成图片
- 在内存中拷贝图片方法
- 在内存中拷贝图片方法
- 将图片存储在内存中
- ASP.NET 缓存
- MTK平台用Socket实现HTTP请求总结
- jQuery入门
- 朱棣文在哈佛大学毕业典礼上的演讲
- 如何解决"找不到MSVCR80.dll "的问题
- 如何截取屏幕图片并把它在内存中转化成jpg
- 最犇的.Net下的委托入门讲解
- Design Pattern - Structural Pattern - Adapter
- 设计模式12:Facade Pattern (门面模式)
- WinCE如何响应硬件中断以及读写物理地址
- VS 2008 Feature Pack使用
- 关于Memcache
- 预编译连接符
- 绿坝,有一个WAPI