python 实现超快窗口截图,自动获取当前活动窗口并展示截图

2022/5/23 3:02:46

本文主要是介绍python 实现超快窗口截图,自动获取当前活动窗口并展示截图,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

实现思路是先获取到当前最上面活动的窗口信息,然后提取该窗口的名称信息。

file

【阅读全文】

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

其中用到了两个第三方模块,分别是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截图操作就实现了,目前正在考虑怎么实现批量截图的过程,有好的建议可以直接留言或是私信,感谢大家一直以来的支持!

file

【往期精彩】

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

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

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

python多线程同步售票系统解决思路…

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



这篇关于python 实现超快窗口截图,自动获取当前活动窗口并展示截图的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程