获取安卓模拟器截图

最简单的方法当然是使用adb
adb shell screencap -p >screenshot.png

不过有些app会限制adb进行截图,这个时候adb截屏为黑屏

此时有两种方法获取截图
第一使用模拟器自带截图快捷键,获取安卓自带截图键,逍遥模拟器为alt+F3
可模拟键盘输入按键(自行百度)
第二种:使用winapi + 电脑屏幕截图
以下为C#代码,python请自行转换(memu为逍遥模拟器的窗口名称)
先获取模拟器句柄,然后使窗口显示,根据窗口大小和位置截图,然后隐藏窗口

        /// <summary>/// 获取模拟器截屏/// </summary>/// <param name="num"></param>public static Bitmap GetEmulatorScreen(int num){Process[] procList = Process.GetProcessesByName("memu");for (int i = 0; i < 20; i++){if (i == num){IntPtr handle = procList[i].MainWindowHandle;ShowWindow(handle, 1);RECT rECT = new RECT();GetWindowRect(handle, ref rECT);Task.Delay(200).Wait();Bitmap bitmap = ScreenShot.GetScreen(rECT.Left, rECT.Top, rECT.Right, rECT.Bottom);ShowWindow(handle, 2);return bitmap;}}return null;}/// <summary>/// 获取窗口位置/// </summary>/// <param name="hWnd"></param>/// <param name="lpRect"></param>/// <returns></returns>[DllImport("user32.dll")][return: MarshalAs(UnmanagedType.Bool)]private static extern bool GetWindowRect(IntPtr hWnd, ref RECT lpRect);[StructLayout(LayoutKind.Sequential)]private struct RECT{public int Left;                          //最左坐标public int Top;                           //最上坐标public int Right;                         //最右坐标public int Bottom;                        //最下坐标}/// <summary>/// 显示窗口/// 0    关闭窗口/// 1    正常大小显示窗口/// 2    最小化窗口/// 3    最大化窗口/// </summary>/// <param name="hwnd"></param>/// <param name="nCmdShow"></param>/// <returns></returns>[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]private static extern int ShowWindow(IntPtr hwnd, int nCmdShow);/// <summary>/// 获取屏幕/// </summary>/// <param name="sourceX">左上角x</param>/// <param name="sourceY">左上角y</param>/// <param name="destinationX">右下角x</param>/// <param name="destinationY">右下角y</param>/// <returns></returns>public static Bitmap GetScreen(int sourceX, int sourceY, int destinationX, int destinationY){if(sourceX < 0){sourceX = 0;}if (sourceY < 0){sourceY = 0;}if(destinationY <= sourceY){destinationY = sourceY + 10;}int Width = destinationX - sourceX;int Height = destinationY - sourceY;Bitmap bmSave = GetScreen();Graphics g = Graphics.FromImage(bmSave);//绘制这个图像g.CopyFromScreen(sourceX, sourceY, destinationX, destinationY, new Size(Width, Height), CopyPixelOperation.SourceCopy);// 2.New一个指定规格的新图片(参数为规格大小)Bitmap tempBitmap = new Bitmap(Width, Height);//3.将新图片绑定到GraphicsGraphics graphics = Graphics.FromImage(tempBitmap);//4.截图图片(原图,新图片的矩形参数,需要截取的矩形区域参数,像素度量单位)graphics.DrawImage(bmSave, new Rectangle(0, 0, Width, Height), new Rectangle(sourceX, sourceY, Width, Height), GraphicsUnit.Pixel);return tempBitmap;}/// <summary>/// 获取全屏截图/// </summary>/// <returns></returns>public static Bitmap GetScreen(){Bitmap bmSave = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);Graphics g = Graphics.FromImage(bmSave);//绘制这个图像g.CopyFromScreen(0, 0, 0, 0, new Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height), CopyPixelOperation.SourceCopy);return bmSave;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/17513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OnTrigger的几种情况

在Unity中&#xff0c;OnTrigger是一种用于处理碰撞事件的函数。它通常用于监测对象之间的触发器&#xff08;Collider&#xff09;交互&#xff0c;并在特定的情况下触发相应的逻辑。在Unity中&#xff0c;有以下几种类型的OnTrigger事件&#xff1a;OnTriggerEnter、OnTrigge…

【Web】web

dns与域名 网络是基于tcp/ip协议进行通信和连接的 应用层——传输层——网络层——数据链路层——物理层 每一定的台主机都有一个唯一且固定的地址标识——IP地址 IP地址的做用&#xff1a;1.区分用户和计算机&#xff1b;2.进行通信 IP地址由32位二进制数组成&#xff0c;…

chatGPT——如何和一个很可爱,思维比较跳跃 ,活泼的女孩聊天

和一个可爱、思维跳跃、活泼的女孩聊天可以是一种很有趣的体验。以下是一些建议&#xff0c;帮助你在对话中保持积极、轻松和有趣的氛围&#xff1a; 用幽默感&#xff1a;幽默是促进轻松气氛的有效方式。适时地开玩笑&#xff0c;但要确保不会伤害对方感情或触及敏感话题。笑话…

读取application-dev.properties的中文乱码【bug】

读取application-dev.properties的中文编码【bug】 2023-7-30 22:37:46 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是https://blog.csdn.net/qq_51625007 禁止其他平台发布时删除以上此话 bug 读取application-dev.propert…

ATFX汇市月报:7月美联储坚定加息,8月成利率决议空档期

7月汇市行情回顾—— 7月份&#xff0c;美元指数下跌1.01%&#xff0c;收盘在101.88点&#xff0c; 欧元升值0.76%&#xff0c;收盘价1.0997点&#xff1b; 日元升值1.41%&#xff0c;收盘价142.27点&#xff1b; 英镑升值1.08%&#xff0c;收盘价1.2835点&#xff1b; 瑞…

TSINGSEE青犀视频AI算法引擎中台在渣土车智慧管控场景中的应用

一、行业背景 随着社会的发展和人们生活水平的不断进步&#xff0c;大家对环境卫生和空气质量的要求越来越重视。渣土车是建筑垃圾的运输主力&#xff0c;也存在行驶频繁、不合规、不合法的操作&#xff0c;可能对交通安全、环境卫生和城市形象造成影响。比如在施工工地&#x…

基于MATLAB实现图像处理常用应用案例(附上100个仿真源码+数据)

MATLAB是一款功能强大的图像处理软件&#xff0c;可以用于实现各种常见的图像处理应用。下面将介绍几个常见的图像处理应用案例。 文章目录 1. 图像去噪2. 图像增强3. 图像分割4. 特征提取5. 图像拼接6. 完整源码数据下载 1. 图像去噪 图像去噪是图像处理中的一项重要任务&am…

STM32 中断优先级管理(二)

NVIC中断管理相关函数主要在HAL库关键文件stm32f1xx_hal_cortex.c中定义。 中断优先级分组函数 void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup);这个函数的作用是对中断的优先级进行分组&#xff0c;这个函数在系统中只需要被调用一次。 void HAL_NVIC_SetPrio…

【C++】C/C++内存管理

1、C/C内存分布 【1】栈又叫堆栈 – 非静态局部变量/函数参数/返回值等等&#xff0c;栈是向下增长的。 【2】内存映射段 – 是高效的I/O映射方式&#xff0c;用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存&#xff0c;做进程间通信 【3】堆 – 用于程序运…

Java面向对象的三大特征

Java面向对象的三大特征 java面向对象的三大特征&#xff1a;“封装、继承、多态”。更多Java技术知识&#xff0c;请登陆疯狂软件教育官网。微信搜索微信号&#xff1a;疯狂软件&#xff0c;参加2015年优惠活动&#xff0c;有机会获得优惠劵和代金劵。 以本文为例&#xff0c…

系统架构师---开发方法

前言&#xff1a; 软件开发方法是软件开发的方法学、自从“软件危机”爆发以来&#xff0c;软件研究人员就在对开发方法进行不断的研究&#xff0c;以期待能够提高软件的质量、降低软件的成本。经过40多年的研究&#xff0c;人们提出了 很多的开发方法&#xff0c;如最初的结构…

等待唤醒机制和线程池

进程间的通信&#xff1a;多个线程在处理同一个资源&#xff0c;但是处理的动作&#xff08;线程的动作&#xff09;却不相同。 进程间的通信可以让资源进行有效的利用 等待唤醒中的方法&#xff1a; wait &#xff1a;让线程进入等待状态notify &#xff1a;随机唤醒一个线…

百分点科技参编信通院《数据中台实践指南(1.0版)》

日前&#xff0c;在大数据产业发展大会上&#xff0c;百分点科技参与编写的《数据中台实践指南&#xff08;1.0版&#xff09;》正式发布&#xff0c;该指南由中国信息通信研究院大数据技术标准推进委员会指导和组织&#xff0c;百分点科技、阿里云、中国移动、中国联通、交通银…

windows系统之WSL 安装 Ubuntu

WSL windows10 以上才有这个wsl功能 WSL&#xff1a; windows Subsystem for Linux 是应用于Windows系统之上的Linux子系统 作用很简单&#xff0c;可以在Windows系统中获取Linux系统环境&#xff0c;并完全直连计算机硬件&#xff0c;无需要通过虚拟机虚拟硬件 Windows10的W…

Linux操作系统学习,Linux基础命令大全

目录 第一章、Linux简介和安装1.1&#xff09;Linux简介和分类1.2&#xff09;安装VMware虚拟机&#xff0c;在虚拟机中安装CentOS 7 第二章、虚拟机中Linux的IP地址配置详解2.1&#xff09;什么是IP地址&#xff0c;如何查看2.2&#xff09;虚拟机NAT模式中Linux的IP地址设置有…

随机森林的相关理论知识

文章目录 一、定义二、概念梳理1.有监督学习2.集成学习3. bootstrap4. bagging5. 决策树6.剪枝 二、实现 一、定义 随机森林 是由多个 决策树 组成的 bagging 算法&#xff0c;bagging是 集成学习 的一种&#xff0c;集成学习是 有监督学习 的一种 二、概念梳理 1.有监督学习…

selenium 遇到更新chorme驱动

打开浏览器,在地址栏输入chrome://version/便可以查看到谷歌当前的版本号 谷歌浏览器驱动的下载网址 http://chromedriver.storage.googleapis.com/index.htmlhttp://chromedriver.storage.googleapis.com/index.html 解压后把chromedriver.exe 放到python安装的目录下&am…

cURL error 1: Protocol “https“ not supported or disabled in libcurl

1、php项目composer update报错 2、curl -V检查 发现curl已经支持了https了 3、php版本检查 4、php插件检查 插件也已经含有openssl组件了 5、phpinfo检查 curl是否开启ssl 定位到问题所在&#xff0c;php7.4的 curl扩展不支持 https 需要重装 php7.4的curl扩展 6、curl下载 下…

刷题笔记 day4

力扣 611 有效三角形的个数 首先需要知道如何判断 三个数是否能构成三角形。 假如 存在三个数 a < b < c&#xff0c;如果要构成三角形&#xff0c;需要满足&#xff1a; ab > c ; a c > b ; b c > a ; 任意两个数大于第三个数就可构成三角形。 其实不难…

linux的exec和system函数介绍及选择

在应用程序中有时候需要调用第三方的应用&#xff0c;这是常见的需求。此时可以使用linux下的exec命令或system命令达到目的。但是这两个该选择哪个呢&#xff1f;有什么区别&#xff1f;下面总结介绍下。 exec和system介绍 在Linux中&#xff0c;exec命令用于在当前进程中执行…