python截屏_Python: 截屏
最近项目中想实现截屏功能,使用的笔记本是高清屏,实际屏幕设置成了150%,所以在截屏的时候遇到个各种问题。
最开始使用PIL ImageGrab来截取屏幕,如果本来是100%的设置没有问题,能截取到全屏,但是150%或者其他设置的就会有问题,只能截取到屏幕的左上部分,无法截取到全屏。
from PIL import ImageGrab
pic = ImageGrab.grab()
# print(pic.size)
pic.save(r'C:\Users\test\Desktop\Automation\python\pic.jpg')
但是这个问题很奇怪,也有的机器150%设置,但是执行后没有问题。
遇到这个问题后看到网上有个解决方法:在注册表中Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers添加python.exe和pythonw.exe路径信息进去,再次执行程序就能截取到全屏,用python代码添加注册表的话,要重新再次运行程序才能截取到全屏:
from PIL import ImageGrab
import winreg
reg = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER)
key = winreg.OpenKey(reg, r'Control Panel\Desktop\WindowMetrics')
# print(winreg.QueryValueEx(key, 'AppliedDPI'))
if winreg.QueryValueEx(key, 'AppliedDPI')[0] != 96:
key.Close()
key = winreg.OpenKey(reg, r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers', 0, winreg.KEY_ALL_ACCESS)
winreg.SetValueEx(key, r'C:\Users\test\AppData\Local\Continuum\anaconda3\pythonw.exe', 0, winreg.REG_SZ, 'HIGHDPIAWARE')
winreg.SetValueEx(key, r'C:\Users\test\AppData\Local\Continuum\anaconda3\python.exe', 0, winreg.REG_SZ, 'HIGHDPIAWARE')
key.Close()
reg.Close()
pic = ImageGrab.grab()
# print(pic.size)
pic.save(r'C:\Users\test\Desktop\Automation\python\pic.jpg')
考虑到以后会用到其他机器上,每次都需要执行2次才能截取到全屏,就弃用了此方法。
后来使用pyautogui来截取全屏,一般没有安装pyautogui,需要先安装:
pip install pyautogui
import pyautogui
img = pyautogui.screenshot()
img.save(r'C:\Users\test\Desktop\Automation\python\pic_pyautogui.jpg')
但是如果笔记本还有连接外接显示器,是截取不到外显上内容的,只能截取笔记本显示器上的内容。如果要截取到外显上内容,想到使用win32方法来实现按键盘上的截屏功能,从而来实现抓取全屏带外显内容:
import win32api
import win32con
from PIL import ImageGrab
win32api.keybd_event(win32con.VK_SNAPSHOT, 0)
im = ImageGrab.grabclipboard()
im.save(r'C:\Users\test\Desktop\Automation\python\pic_screenshot.jpg')
python截屏_Python: 截屏相关推荐
- python 几种android截屏方式的学习与使用
python 几种android截屏方式的学习与使用 screencap screencap是Android的截屏工具.通过调用访问SurfaceFlinger服务或读取 /dev/graphics/ ...
- android 截长图 方法,Android实现截屏与截长图功能
本文实例为大家分享了Android实现截屏与截长图功能展示的具体代码,供大家参考,具体内容如下 Demo在GitHub的地址:ScreenShoot 在Android开发中,有时候会遇到需要截屏分享到 ...
- 华为手机截屏怎么截长图_华为手机竟然有6种截屏方法,你用过几种?3种以上的手机没白买...
很多时候我们都喜欢通过手机截图来对一些信息进行保存分享,那么常用华为手机,关于华为手机截图方法你知道几种呢? 悄悄告诉你,其实华为手机截图方法多达6中,各种花样截图方法都有,就是可惜了很多小伙伴都不知 ...
- 笔记本电脑截屏怎么截_电脑的截屏与录屏
电脑的截屏与录屏 相信大家都知道 QQ的截屏和录屏快捷键:截屏:Ctrl+Alt+A录屏:Ctrl+Alt+S 这种方便快捷的方式非常受人欢迎,但是万一我们的电脑上没有下载或打开QQ,我们该怎么办呢? ...
- iOS 防止录屏和截屏的监听
iOS实现不了不让截屏或者录屏,但是提供的截屏或者录屏的监听方法,我们也可以通过监听方法来拿到截屏的图片,为此参考了支付宝和微信支付时,截屏的处理方式. 通过上图发现,其实图片都已经保存到本地相册中, ...
- iOS 防止截屏、录屏技术
0x00 直接看图 看图演示,可防止截屏和录屏 可以开启或者关闭,是否允许截屏和录屏 0x01 代码 JHNonRecordableView *view1 = [[JHNonRecordableVie ...
- 禁止APP录屏和截屏
Android安全:禁止APP录屏和截屏 一.前言: Android有些APP会为了安全,禁止录屏和截屏,例如:金融.银行相关的.禁止录屏和截屏并不难,只需要在 Activity 的onCreate( ...
- Android安全:禁止APP录屏和截屏
Android有些APP会为了安全,禁止录屏和截屏,例如:金融.银行相关的.禁止录屏和截屏并不难,只需要在 Activity 的onCreate() 方法中添加一行代码即可: getWindow(). ...
- Android实现截屏和截长图功能的几种方法
一般情况下各种型号的手机都会有自带的截屏功能,也会有诸如"开关机键+音量键"的截屏快捷键,只要手机是亮屏状态,都会将手机屏幕的可视区域(包含状态栏)全部截取下来. 如果开发中想要调 ...
最新文章
- 自己动手写一个印钞机 第四章
- python开发好学吗-python软件开发好学吗
- 深度学习中张量flatten处理(flatten,reshape,reduce)
- 视差图转为深度图_Parallax Mapping视差映射:模拟冰块
- android enum 内存,Android 中的 Enum 到底占多少内存?该如何用?
- 从Client应用场景介绍IdentityServer4(一)
- 非985,计算机专业的大学生该如何自学编程?
- [VTK]VTK的三维模型保存、读取之保存为vtk格式
- 「SCOI2015」小凸想跑步 解题报告
- 爬虫调用百度翻译API
- 使用FastReport 3.0及以上版本创建动态报表的几个技巧(转)
- Android “Theme.AppCompat.Light”解决方法
- thinkphp5.0 session驱动方式问题汇总
- Skiing POJ 3037 很奇怪的最短路问题
- 前端 express使用教程
- qtabwidget设置表头_QTableWidget添加表头菜单 并 可以通过表头菜单隐藏选中列
- pip国内镜像(清华大学镜像)
- 【C语言】动态内存开辟的使用『malloc』
- java短视频开发技术_看Java学员如何用前后端分离技术搭建短视频健身APP
- 一个无需会员就可以看Netflix的安卓App