• 技术文章 >后端开发 >Python教程

    python如何进行截图

    尚2019-07-08 09:17:28原创4095

    Python获取电脑截图有多种方式,具体如下:

    PIL中的ImageGrab模块

    windows API

    PyQt

    pyautogui

    PIL中的ImageGrab模块

    import time
    import numpy as np
    from PIL import ImageGrab
    
    img = ImageGrab.grab(bbox=(100, 161, 1141, 610))
    img = np.array(img.getdata(), np.uint8).reshape(img.size[1], img.size[0], 3)

    使用PIL中的ImageGrab模块简单,但是效率有点低。

    windows API

    调用windows API,速度快但是使用较复杂,这里就不做详细介绍了,因为有更好用的PyQt。

    PyQt

    PyQt比调用windows API简单很多,而且有windows API的很多优势,比如速度快,可以指定获取的窗口,即使窗口被遮挡。需注意的是,窗口最小化时无法获取截图。

    首先需要获取窗口的句柄。

    import win32gui
    hwnd_title = dict()
    def get_all_hwnd(hwnd,mouse):
        if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd):
            hwnd_title.update({hwnd:win32gui.GetWindowText(hwnd)})
    
    win32gui.EnumWindows(get_all_hwnd, 0)
     
    for h,t in hwnd_title.items():
        if t is not "":
            print(h, t)

    程序会打印窗口的hwnd和title,有了title就可以进行截图了。

        from PyQt5.QtWidgets import QApplication
        from PyQt5.QtGui import *
        import win32gui
        import sys
    
        hwnd = win32gui.FindWindow(None, 'C:\Windows\system32\cmd.exe')
        app = QApplication(sys.argv)
        screen = QApplication.primaryScreen()
        img = screen.grabWindow(hwnd).toImage()
        img.save("screenshot.jpg")

    pyautogui

    pyautogui是比较简单的,但是不能指定获取程序的窗口,因此窗口也不能遮挡,不过可以指定截屏的位置,0.04s一张截图,比PyQt稍慢一点,但也很快了。

    import pyautogui
    import cv2
    
    img = pyautogui.screenshot(region=[0,0,100,100]) # x,y,w,h
    # img.save('screenshot.png')
    img = cv2.cvtColor(np.asarray(img),cv2.COLOR_RGB2BGR)

    更多Python相关技术文章,请访问Python教程栏目进行学习!

    以上就是python如何进行截图的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:python如何截图
    上一篇:python如何安装matplotlib 下一篇:python怎么生成字典
    大前端线上培训班

    相关文章推荐

    • python如何使用learning_curve• python的while如何使用• python文件操作如何写在指定的行• python能定义类么

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网