首页 > 编程语言 >用Python制作截图小工具

用Python制作截图小工具

时间:2023-08-26 16:55:15浏览次数:70  
标签:截图 Python demo image 模块 屏幕 制作

Python编程语言允许我们执行各种任务,所有这些都是在简单模块和短小精悍的代码的帮助下完成的。在Python的帮助下进行屏幕截图就是这样一项任务。

Python为我们提供了许多模块,使我们能够执行不同的任务。有多种方法可以使用Python及其库进行屏幕截图。

用Pyautogui模块进行截图

第一种方法是使用Python提供的pyauotgui 模块。你可以在终端窗口使用下面的命令来安装这个模块。

pip install pyautogui

pyautogui 模块使用screenshot() 函数,它有助于捕捉整个屏幕。之后,你可以使用save() 函数来保存图像,或者使用imwrite() 函数与NumPy 和OpenCV 模块一起把图像写到磁盘上。

详细了解一下这两种方法。

1.用Pyautogui模块中的save() 函数

一旦你安装了pyautogui 模块,最简单的截图方法是使用screenshot() 函数和save() 函数。下面是一个使用这些函数的示例代码。

示例代码:

import pyautogui
demo_image = pyautogui.screenshot()
demo_image.save("demo_one.jpg")

首先,我们导入pyautogui 模块。然后,我们调用screenshot() 函数,该函数捕获了屏幕的图像。

此外,在最后一行代码中,我们使用save() 函数和我们想保存的图像的名称。在这种情况下,捕获的图像可以通过文件名demo_one.jpg 找到。

下面是我们得到的输出图像。注意,你会在Jupyter笔记本或Python的同一目录下找到这个图像。

在这里插入图片描述
如果你想在捕捉图像时有一些延迟,你可以使用time 模块的sleep() 函数。

2.用Numpy和Opencv模块与Pyautogui一起使用

第二种方法涉及到与pyautogui 一起使用另外两个模块;它们是NumPy 和OpenCV 。在第一种方法中,我们使用save() 函数来保存图像。

但在这里,我们将使用这两个模块来拍摄和保存屏幕截图。

通过在终端写下以下命令来安装Numpy 和OpenCV 。

pip install numpy

pip install opencv-python

下面是所有模块安装后必须使用的代码。

示例代码:

#import the required modules
import numpy as x
import cv2
import pyautogui
#use pyautogui to take screenshot
demo_image = pyautogui.screenshot()
#use opencv and numpy to manipulate image
demo_image = cv2.cvtColor(x.array(demo_image),cv2.COLOR_RGB2BGR)
#save the image using opencv
cv2.imwrite("demo_two.png", demo_image)

我们首先导入了所需的模块,然后使用screenshot() 函数来捕获屏幕。然后,我们将图像转换为NumPy 数组,并将颜色的顺序从RGB改为BGR。

这样做是因为当OpenCV 读取图像时,它要求颜色的顺序是BGR而不是默认的RGB。最后,我们使用imwrite() 函数将图像写到磁盘上。

这就是输出图像的样子。

输出:
在这里插入图片描述
以上是关于如何在Python中使用pyautogui 模块进行屏幕截图的全部内容。现在,我们要进入下一个方法来做同样的事情。

要了解更多关于pyautogui 模块的信息,请参考这个文档。

用Pillow模块

使用pyautogui 模块,默认情况下可以捕获整个屏幕。然而,如果我们必须捕捉屏幕的一部分,我们可以使用Pillow 模块。

这个模块使用另一个叫做ImageGrab 的子模块,让我们设置我们想要捕捉的屏幕区域的坐标。我们使用grab() 函数来指定这些坐标。

下面是这种方法的代码。

示例代码:

#Python小白学习交流群:711312441
from PIL import ImageGrab
ss_coordinates = (200, 200, 600, 600)
demo_image = ImageGrab.grab(ss_coordinates)
demo_image.save("demo_three.jpg")

我们首先导入了Pillow 模块和ImageGrab 子模块。然后,我们为我们想要捕捉的屏幕设置了一些坐标。

此外,我们使用grab() 函数,并将这些坐标传递给该函数。然后,使用save() 方法保存捕获的图像。

这就是我们得到的屏幕截图。

输出:
在这里插入图片描述
从本质上讲,这就是在Python中拍摄屏幕截图的方法,即通过设置坐标。参考该文档以了解更多关于Pillow 模块的信息。

用Pyscreenshot模块

Python提供了这个叫做pyscreenshot 的模块,其唯一的任务就是进行截图。要安装这个模块,在终端使用以下命令。

pip install pyscreenshot

一旦该模块安装完毕,使用这段代码对整个屏幕进行截图。

示例代码:

import pyscreenshot
image_demo = pyscreenshot.grab()
image_demo.save("demo_four.png")

我们首先导入了pyscreenshot 模块,然后使用grab() 函数来捕获屏幕。最后,我们使用save() 函数来保存图像。

下面是我们得到的图像的输出。

输出:
在这里插入图片描述
我们还可以使用这个模块来捕捉屏幕的一部分。我们只需将所需的坐标作为一个元组传递给grab() 函数。

下面是对屏幕特定部分进行截图的代码。

示例代码:

import pyscreenshot
image_demo = pyscreenshot.grab(bbox=(100, 100, 500, 500))
image_demo.save("demo_five.png")

请注意,我们在代码的第二行中传递了我们想要捕捉的屏幕部分的坐标。其余的代码与前面的代码工作相同。

下面是捕捉到的图像。

输出:
在这里插入图片描述
注意这个模块,pyscreenshot ,已经不怎么用了,你最好选择我们讨论的前两种在Python中拍摄屏幕的方法。这就是关于如何在Python中进行屏幕截图的全部内容。

总结

这篇文章讨论了我们如何使用Python编程语言进行截图。我们看到了如何使用pyautogui 模块与save() 函数和其他模块,如NumPy 和OpenCV 。

我们还学习了如何使用Python的Pillow 模块来捕捉屏幕的一部分。此外,我们还看到了如何使用pyscreenshot 模块来捕获整个屏幕和它的一部分。

标签:截图,Python,demo,image,模块,屏幕,制作
From: https://www.cnblogs.com/python1111/p/17659086.html

相关文章

  • Python中会被视为False的值有以下几种
    Python中会被视为False的值有以下几种:布尔值:False数值:0或0.0字符串:空字符串,如’'或""容器:空的容器,如[],(),{},set()None:None其他的值都会被视为True。您可以用bool()函数来测试一个值是否为True或False。例如:bool(0)#Falsebool(1)#Truebool('')#Falsebool('Hello'......
  • Python中如何判断列表是否为空
    Python中如何判断列表是否为空介绍列表是Python中最常用的数据结构之一,可以存储多个元素,比如数字,字符串,对象等列表的使用场景很多,比如排序,查找,统计,过滤等在使用列表的过程中,有时候需要判断列表是否为空,也就是列表中是否有元素在Python中,有两种常用的方法来判断列表是否为空,......
  • 如何使用MicroPython将Raspberry Pi Pico W与伺服电机连接?
    PicoW是一款经济实惠且紧凑的微控制器板,基于RP2040芯片,非常适合嵌入式系统和物联网项目。MicroPython是Python的轻量级实现,为微控制器编程提供了用户友好的环境。通过遵循概述的步骤,读者将学习如何将伺服电机连接到PicoW、编写MicroPython代码来控制其运动,并获得将精确......
  • Python中小括号( )、中括号[ ]和大括号{}分别代表什么?
     Python中,小括号 () 代表元组数据类型,中括号 [] 代表列表数据类型,大括号 {} 代表字典数据类型。 元组是一种不可变序列,创建方法很简单,大多时候都是用小括号括起来的。例如:tup=(1,2,3)列表是一种可变序列,其创建方法即简单又特别。例如:list=['a','b',......
  • centos7.6 anaconda安装python
    在CentOS7.6上安装Anaconda并配置Python3.8.17环境可以按照以下步骤进行操作:下载Anaconda:首先,前往Anaconda官网下载适用于Linux的Anaconda安装包。选择适合你操作系统位数的版本(通常是64位)。下载链接:https://www.anaconda.com/products/distribution安装......
  • Python绘图:小提琴图的理解与绘制
    目录一、小提琴图简介1.1小提琴图的概念1.2小提琴图与箱线图、核密度函数以及高斯混合体之间的关系与区别二、箱线图的绘制2.1基于matplotlib库的箱线图绘制(1)函数主要参数及功能(2)函数返回值(3)示例2.2基于seaborn库的箱线图绘制(1)函数主要参数功能及其返回值(2)示例附录Python绘图......
  • 无涯教程-Python - XML处理
    XML是一种可移植的开放源语言,它使程序员能够开发可由其他应用程序读取的应用程序,而无需考虑操作系统和/或开发语言。可扩展标签语言(XML)是一种类似于HTML或SGML的标签语言。万维网联盟建议这样做,并且可以作为开放标准使用。XML对跟踪少量到中等数量的数据而无需基于SQL的主干......
  • 2023支持截图上传的免费图床有哪些
    1.华趣图床是一个新型自研图床,图片是储存在阿里云oss多份附件储存,稳定保障。、因为图床作者原本也是一个小站长,也因为是自研平台,所以更加的懂得站长们的需求。就在刚刚华趣免费图床支持了,截图上传,拖拽上传等功能。......
  • 【python】使用ddddocr模块报错处理:AttributeError: module 'PIL.Image' has no attri
    安装pipinstallddddocr安装特别慢,几kb每秒,而且容易超时报错使用清华源下载:pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simpleddddocr使用img_url="https://user.wangxiao.cn/apis//common/getImageCaptcha"img_resp=session.post(img_url)......
  • 无涯教程-Python - 多线程
    运行多个线程类似于同时运行多个不同的程序,但具有以下优点-一个进程中的多个线程与主线程共享相同的数据空间,因此比起单进程,它们可以更轻松地共享信息或彼此通信。有时称为轻量级进程的线程,它们不需要太多的内存开销。开始新线程要生成另一个线程,您需要调用thread模块中可......