zoukankan      html  css  js  c++  java
  • python 调用windowsAPI截图

    方式一

    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)
    

    方式二

    import time
    from PIL import ImageGrab, Image
    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 = Image.fromarray(im)
    im_pil.show()
    
  • 相关阅读:
    冲刺会议第七天
    冲刺会议第六天
    冲刺会议第五天
    冲刺会议第四天
    题目
    关于小程序开发者和体验者的数据请求问题
    focus、blur事件的事件委托处理(兼容各个流浏览器)
    收集的一些技术论坛博客
    ios下fixed回复框bug的解决方案
    jQuery的13个优点
  • 原文地址:https://www.cnblogs.com/se7enjean/p/12766269.html
Copyright © 2011-2022 走看看