zoukankan      html  css  js  c++  java
  • Python实现屏幕截图

    好处是

    灵活
    速度快
    缺点是:

    写法繁琐
    不跨平台
    import time
    import win32gui, win32ui, win32con, win32api


    def window_capture(filename):
    hwnd = 0 # 窗口的编号,0号表示当前活跃窗口
    # 根据窗口句柄获取窗口的设备上下文DC(Divice Context)
    hwndDC = win32gui.GetWindowDC(hwnd)
    # 根据窗口的DC获取mfcDC
    mfcDC = win32ui.CreateDCFromHandle(hwndDC)
    # mfcDC创建可兼容的DC
    saveDC = mfcDC.CreateCompatibleDC()
    # 创建bigmap准备保存图片
    saveBitMap = win32ui.CreateBitmap()
    # 获取监控器信息
    MoniterDev = win32api.EnumDisplayMonitors(None, None)
    w = MoniterDev[0][2][2]
    h = MoniterDev[0][2][3]
    # print w,h   #图片大小
    # 为bitmap开辟空间
    saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)
    # 高度saveDC,将截图保存到saveBitmap中
    saveDC.SelectObject(saveBitMap)
    # 截取从左上角(0,0)长宽为(w,h)的图片
    saveDC.BitBlt((0, 0), (w, h), mfcDC, (0, 0), win32con.SRCCOPY)
    saveBitMap.SaveBitmapFile(saveDC, filename)


    beg = time.time()
    for i in range(10):
    window_capture("haha.jpg")
    end = time.time()
    print(end - beg)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    输出结果为0.375秒,也就是说通过windows API每次截图只需要0.0375s,真是快得一逼呀。

    使用PIL的ImageGrab模块
    import time
    from PIL import ImageGrab
    import numpy as np
    import cv2

    beg = time.time()
    debug = False
    # img = ImageGrab.grab(bbox=(250, 161, 1141, 610))
    img = ImageGrab.grab()
    end = time.time()
    print('time:',end - beg)

    img.show()
    img.save("screen.jpg")

    # PIL image to OpenCV image
    im = np.array(img)
    cv2.imshow('cv image', im)
    cv2.waitKey()

    # OpenCV image to PIL image
    im_pil = PIL.Image.fromarray(im)
    im_pil.show(http://www.my516.com)

  • 相关阅读:
    Python socket 基础(Server)
    Python socket 基础(Client)
    DOM
    Software Testing Concepts
    coroutine
    这一周~&&html+css的学习感悟
    充实的几天~
    时间不够用的感觉
    论文真痛苦
    焦躁的一周……
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11044469.html
Copyright © 2011-2022 走看看