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

其实现思想是先获取当前活动的窗口信息,然后提取窗口的名称信息。

[En]

The idea of implementation is to first get the current active window information, and then extract the name information of the window.

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

【阅读全文】

之后,获取窗口的坐标信息,即左上角的开始坐标和右下角的结束坐标。最后,直接截取屏幕截图并显示屏幕截图。

[En]

After that, the coordinate information of the window is obtained, that is, the start coordinates of the upper left corner and the end coordinates of the lower right corner. Finally, the screenshot is taken directly and the screenshot is displayed.

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

pip install Pillow
pip install win32gui

导入其中使用的三个非标准库。

[En]

Import the three non-standard libraries used in it.

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)

输入要截取的窗口名称作为当前窗口,然后提取需要截图的窗口对象。

[En]

Enter the name of the window you want to capture as the current window, and then extract the window object that needs to be screenshot.

name = input('请输入需要截图的活动窗口名称: \n')

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

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

获取窗口的坐标信息、起始坐标信息和结束坐标信息。

[En]

Get the coordinate information of the window, start coordinate information and end coordinate information.

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)

截图完成后展示截图效果,如果不需要展示,则不需要添加此行代码。

[En]

Show the effect of the screenshot after completing the screenshot, and you don’t need to add this line of code if you don’t need to show it.

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

最后一步是保存屏幕截图。

[En]

The last step is to save the screenshot.

image.save('target.png')

print('截图已经保存完成!')

上面整个的python截图操作就实现了,目前正在考虑怎么实现批量截图的过程,有好的建议可以直接留言或是私信,感谢大家一直以来的支持!

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

【往期精彩】

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

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

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

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

找几个好玩的游戏编程平台和你分享!

[En]

Find several fun game programming platforms to share with you!

Original: https://www.cnblogs.com/lwsbc/p/16271504.html
Author: Python集中营
Title: python 实现超快窗口截图,自动获取当前活动窗口并展示截图

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/499563/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球