关于python:python-实现超快窗口截图自动获取当前活动窗口并展示截图

43次阅读

共计 1262 个字符,预计需要花费 4 分钟才能阅读完成。

实现思路是先获取到以后最下面流动的窗口信息,而后提取该窗口的名称信息。

【浏览全文】

之后获取窗口的坐标信息,即左上角的开始坐标及右下角的完结坐标。最初间接截图并将截图的图片进行展现。

其中用到了两个第三方模块,别离是 win32gui 和 Pillow,装置命令如下:

pip install Pillow
pip install win32gui

将其中应用到的三个非标准库导入进来。

from win32gui import *  # 操作 windows 窗口
from PIL import ImageGrab  # 操作图像
import win32con  # 零碎操作 

初始化一个 set 列表寄存所有流动窗口名称,应用 set 类型的目标是保障所有流动窗口名称的唯一性。

names = set()

编写 get_window_title 函数,获取以后的所有流动窗口对象。

def get_window_title(window, nouse):
    '''
    获取窗口题目函数
    :param window: 窗口对象
    :param nouse:
    :return:
    '''

    if IsWindow(window) and IsWindowEnabled(window) and IsWindowVisible(window):

        names.add(GetWindowText(window))

EnumWindows(get_window_title, 0)

list_ = [name for name in names if name]

for n in list_:

    print('流动窗口:', n)

输出本人想要截图的窗口名称作为以后窗口,而后提取到须要截图的窗口对象。

name = input('请输出须要截图的流动窗口名称: \n')

window = FindWindow(0, name)  # 依据窗口名称获取窗口对象

ShowWindow(window, win32con.SW_MAXIMIZE)  # 将该窗口最大化 

获取该窗口的坐标信息,开始坐标信息和完结坐标信息。

x_start, y_start, x_end, y_end = GetWindowRect(window)

# 坐标信息
box = (x_start, y_start, x_end, y_end)

调用 ImageGrab.grab() 函数实现对窗口的截图操作。

image = ImageGrab.grab(box)

在实现截图之后展现一下截图的成果,如果不须要展现的话就不须要增加这行代码了。

image.show()  # 图片展现,如果截完图须要展现则放开此项 

最初一步,将截图好的图片保留下来。

image.save('target.png')

print('截图曾经保留实现!')

下面整个的 python 截图操作就实现了,目前正在思考怎么实现批量截图的过程,有好的倡议能够间接留言或是私信,感激大家始终以来的反对!

【往期精彩】

怎么用 python 做一个解压缩小工具 …

python 中最简略的 turtle 绘图:奥运五环!

常识汇总:python 办公自动化应该学习哪些内容?

python 多线程同步售票零碎解决思路 …

发现几个好玩的游戏编程平台,与君共勉!

正文完
 0