美文网首页Python待用
python 实现超快窗口截图,自动获取当前活动窗口并展示截图

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

作者: Python集中营 | 来源:发表于2022-05-14 21:01 被阅读0次

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

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

    【往期精彩】

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

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

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

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

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

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/cymmurtx.html