c++截屏,并保存。
c++截屏,并保存。
下面的程序有很清楚的注释。
#define _AFXDLL//为了方便是用mfc类
#include<afxwin.h>
#include<opencv\cv.h>
#include<opencv\highgui.h>
#include<stdio.h>
#include <stdio.h>LPVOID screenCaptureData=NULL;
HBITMAP hBitmap;
HDC hDDC;
HDC hCDC;
int nWidth;
int nHeight;
void initGDI(){nWidth = GetSystemMetrics(SM_CXSCREEN);//得到屏幕的分辨率的xnHeight = GetSystemMetrics(SM_CYSCREEN);//得到屏幕分辨率的yscreenCaptureData = new char[nWidth*nHeight*4];memset(screenCaptureData,0,nWidth);// Get desktop DC, create a compatible dc, create a comaptible bitmap and select into compatible dc.hDDC = GetDC( GetDesktopWindow() );//得到屏幕的dchCDC = CreateCompatibleDC(hDDC);//hBitmap =CreateCompatibleBitmap(hDDC,nWidth,nHeight);//得到位图SelectObject(hCDC,hBitmap); //好像总得这么写。
}
void gdiScreenCapture(LPVOID screenCaptureData){BitBlt(hCDC,0,0,nWidth,nHeight,hDDC,0,0,SRCCOPY);GetBitmapBits(hBitmap,nWidth*nHeight*4,screenCaptureData);//得到位图的数据,并存到screenCaptureData数组中。IplImage *img = cvCreateImage(cvSize(nWidth,nHeight),8,4);//创建一个rgba格式的IplImagememcpy(img->imageData,screenCaptureData,nWidth*nHeight*4);//这样比较浪费时间,但写的方便。这里必须得是*4,上面的链接写的是*3,这是不对的。IplImage *img2 = cvCreateImage(cvSize(nWidth,nHeight),8,3);//创建一个bgr格式的IplImage,可以没有这个Img2这个变量。cvCvtColor(img,img2,CV_BGRA2BGR);cvShowImage("img",img);cvSaveImage("rgba.jpg",img);cvShowImage("img2",img2);//保存ImagecvSaveImage("hello.jpg",img2);cvWaitKey();}//int APIENTRY _tWinMain(HINSTANCE hInstance,
// HINSTANCE hPrevInstance,
// LPTSTR lpCmdLine,
// int nCmdShow)
int main()
{initGDI();gdiScreenCapture(screenCaptureData);return 0;
}
参考:http://www.cnblogs.com/wangjixianyun/archive/2013/04/10/3012556.html
https://blog.csdn.net/jia_zhengshen/article/details/9384245
https://blog.csdn.net/qq_18984151/article/details/79231953
c++截屏,并保存。相关推荐
- swift 将图片保存到本地_Swift实现截屏并保存相册
func saveToLocal() { //截屏 let screenRect = UIScreen.mainScreen().bounds UIGraphicsBeginImageContext( ...
- 【java-调用摄像头进行截屏与保存-实例篇1-0716】
java-调用摄像头进行截屏与保存-实例篇1-0716 一. 主要涉及功能 二. 主要涉及技术 三. 开启摄像的Webcam包导入IDEA 四.多线程入门 4.1为什么用线程 4.2 如何打开一个新的 ...
- 使用html2canvas完成页面截屏并保存为图片
实现网页页面截屏,并且将其转换为指定图片格式保存下来,需要使用到html2canvas.js. 前面是实现原理和步骤分析,具体实现代码在文章尾部. 一.实现HTML页面截屏并保存为图片 原理是遍历需要 ...
- 使用Snagit安安静静的截屏并保存
使用Snagit软件安安静静的截屏并保存需要注意两点. 1.关闭在编辑器预览. 2.打开分享--文件. 图片.png 设置好之后保存预设.并设置快捷键.这样在工作或者网游戏过程中就可以快速的截屏并保存 ...
- Unity iOS 获取相册图片, 调用原生相机, 截屏并保存到相册
原文链接 该Demo实现如下功能 1.从相册_照片 获取图片, 并贴在Image上 2.从相册_时刻 获取照片, 并贴在Image上 3.打开原生相机,拍照并把照片贴在Image上 4.截屏并保存到相 ...
- ios——如何完成截屏操作并将截屏结果保存到设备本地相册
ios工程--(UIView)获取设备相册权限截取屏幕内容并保存到设备本地相册 设备/引擎:Mac(11.6)/cocos 开发工具:Xcode(13.0) 开发需求:对某个玩法进行截屏操作,并以图片 ...
- Qt实现截屏并保存(转载)
原博地址:http://blog.csdn.net/qinchunwuhui/article/details/52869451?_t_t_t=0.28889142944202306 目前对应用实现截屏 ...
- MFC指定位置截屏并保存为png格式 (pdf函数可以加载这种方式生成的图片)
函数定义部分: //截屏函数 //参数一 生成图片的具体范围 //dst.left 全屏范围内X轴的起始位置(从左到右) //dst.top 全屏范围内Y轴的起始位置(从上到下) //dst.righ ...
- Android 截屏并保存到本地(兼容Android 10.0)
调用: mImageView?.setImageURI(getWindowBitmapPath()) 截屏方法: 这里的View可以替换成除webView外的子View,也就是说可以截取某View的图 ...
- Windows 实现桌面截屏并保存为.jpg
/*********************************************************************************************/ /* ...
最新文章
- Spring Security——自定义认证错误提示信息及自适应返回格式解决方案
- ansible免密登录和账号登录方式
- Happy剑指offer:第2章题目笔记
- Video和Audio标签的使用
- 逆置单链表c语言程序,逆置单链表C语言
- 5.2 分类器的评价指标—accuracy、precision、recall、F1、Fβ、AUC与ROC
- 开发人员使用Helix QAC满足合规性的5大原因
- 3Ds Max动画课程设计
- SQLSERVER走起微信公众帐号已经开通搜狗微信搜索
- 因为Windows防火墙服务未运行,不能正常使用
- MarkMan(马克鳗)
- Python+VSCode+Git【转】
- 笔记本电脑开wifi设置
- 【读者来信】你所认识的世界不一定是真实的
- PDF.js特殊字体、水印加载不出来问题解决
- 关于中断的分类和优先级(优先级由高到低排序)
- 淘淘商城之商品添加功能实现
- 2018web开发_Web设计人员和开发人员的新鲜资源(2018年6月)
- 如何使用freeline
- 安卓模拟器排行_小鸡模拟器安卓版使用教程
热门文章
- python中的index()函数
- 引领语言智能革命的巨型语言模型 ChatGPT PK Google Bard , Anthropic
- 【Python知识】python项目打包和安装
- html怎么让爱心闪动,css画爱心并实现“爱心跳动”
- 2018年大型废柴现场
- 服务器文件管理的工具,服务器文件管理工具有哪些?
- ajax封装及其数据加密
- qtcanpool 知 04:主题之争
- Fast Ray Tracing of Arbitrary Implicit Surfaces with Interval and Affine Arithmetic.CGF 2009
- 【计算机网络】Transmission-Control-Protocol拥塞控制