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++截屏,并保存。相关推荐

  1. swift 将图片保存到本地_Swift实现截屏并保存相册

    func saveToLocal() { //截屏 let screenRect = UIScreen.mainScreen().bounds UIGraphicsBeginImageContext( ...

  2. 【java-调用摄像头进行截屏与保存-实例篇1-0716】

    java-调用摄像头进行截屏与保存-实例篇1-0716 一. 主要涉及功能 二. 主要涉及技术 三. 开启摄像的Webcam包导入IDEA 四.多线程入门 4.1为什么用线程 4.2 如何打开一个新的 ...

  3. 使用html2canvas完成页面截屏并保存为图片

    实现网页页面截屏,并且将其转换为指定图片格式保存下来,需要使用到html2canvas.js. 前面是实现原理和步骤分析,具体实现代码在文章尾部. 一.实现HTML页面截屏并保存为图片 原理是遍历需要 ...

  4. 使用Snagit安安静静的截屏并保存

    使用Snagit软件安安静静的截屏并保存需要注意两点. 1.关闭在编辑器预览. 2.打开分享--文件. 图片.png 设置好之后保存预设.并设置快捷键.这样在工作或者网游戏过程中就可以快速的截屏并保存 ...

  5. Unity iOS 获取相册图片, 调用原生相机, 截屏并保存到相册

    原文链接 该Demo实现如下功能 1.从相册_照片 获取图片, 并贴在Image上 2.从相册_时刻 获取照片, 并贴在Image上 3.打开原生相机,拍照并把照片贴在Image上 4.截屏并保存到相 ...

  6. ios——如何完成截屏操作并将截屏结果保存到设备本地相册

    ios工程--(UIView)获取设备相册权限截取屏幕内容并保存到设备本地相册 设备/引擎:Mac(11.6)/cocos 开发工具:Xcode(13.0) 开发需求:对某个玩法进行截屏操作,并以图片 ...

  7. Qt实现截屏并保存(转载)

    原博地址:http://blog.csdn.net/qinchunwuhui/article/details/52869451?_t_t_t=0.28889142944202306 目前对应用实现截屏 ...

  8. MFC指定位置截屏并保存为png格式 (pdf函数可以加载这种方式生成的图片)

    函数定义部分: //截屏函数 //参数一 生成图片的具体范围 //dst.left 全屏范围内X轴的起始位置(从左到右) //dst.top 全屏范围内Y轴的起始位置(从上到下) //dst.righ ...

  9. Android 截屏并保存到本地(兼容Android 10.0)

    调用: mImageView?.setImageURI(getWindowBitmapPath()) 截屏方法: 这里的View可以替换成除webView外的子View,也就是说可以截取某View的图 ...

  10. Windows 实现桌面截屏并保存为.jpg

    /*********************************************************************************************/ /*   ...

最新文章

  1. Spring Security——自定义认证错误提示信息及自适应返回格式解决方案
  2. ansible免密登录和账号登录方式
  3. Happy剑指offer:第2章题目笔记
  4. Video和Audio标签的使用
  5. 逆置单链表c语言程序,逆置单链表C语言
  6. 5.2 分类器的评价指标—accuracy、precision、recall、F1、Fβ、AUC与ROC
  7. 开发人员使用Helix QAC满足合规性的5大原因
  8. 3Ds Max动画课程设计
  9. SQLSERVER走起微信公众帐号已经开通搜狗微信搜索
  10. 因为Windows防火墙服务未运行,不能正常使用
  11. MarkMan(马克鳗)
  12. Python+VSCode+Git【转】
  13. 笔记本电脑开wifi设置
  14. 【读者来信】你所认识的世界不一定是真实的
  15. PDF.js特殊字体、水印加载不出来问题解决
  16. 关于中断的分类和优先级(优先级由高到低排序)
  17. 淘淘商城之商品添加功能实现
  18. 2018web开发_Web设计人员和开发人员的新鲜资源(2018年6月)
  19. 如何使用freeline
  20. 安卓模拟器排行_小鸡模拟器安卓版使用教程

热门文章

  1. python中的index()函数
  2. 引领语言智能革命的巨型语言模型 ChatGPT PK Google Bard , Anthropic
  3. 【Python知识】python项目打包和安装
  4. html怎么让爱心闪动,css画爱心并实现“爱心跳动”
  5. 2018年大型废柴现场
  6. 服务器文件管理的工具,服务器文件管理工具有哪些?
  7. ajax封装及其数据加密
  8. qtcanpool 知 04:主题之争
  9. Fast Ray Tracing of Arbitrary Implicit Surfaces with Interval and Affine Arithmetic.CGF 2009
  10. 【计算机网络】Transmission-Control-Protocol拥塞控制