>  기사  >  백엔드 개발  >  Python에서 스크린샷을 찍는 방법

Python에서 스크린샷을 찍는 방법

尚
원래의
2019-06-29 15:05:317928검색

pyther : pylingwindows api

Python에서 스크린샷을 찍는 방법pyqt

pyautogui

imagegrab 모듈의 aimagegrab 모듈 imagegrab module은 간단합니다. , 하지만 효율성은 다소 낮습니다.

windows API

빠르지만 사용하기 복잡한 Windows API를 호출하세요. 사용하기 더 좋은 PyQt가 있으므로 여기서는 자세히 설명하지 않겠습니다.

PyQt

PyQt는 Windows API를 호출하는 것보다 훨씬 간단하며, 빠른 속도, 창이 차단되어도 가져올 창을 지정할 수 있는 기능 등 Windows API의 많은 장점을 가지고 있습니다. 창이 최소화된 상태에서는 스크린샷을 찍을 수 없으니 주의하세요.

먼저 창 핸들을 구해야 합니다.

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)

프로그램은 창의 hwnd와 제목을 인쇄합니다. 제목과 함께 스크린샷을 찍을 수 있습니다.

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)

pyautogui

pyautogui는 비교적 간단하지만 프로그램을 받기 위한 창을 지정할 수 없기 때문에 창을 차단할 수는 없지만 스크린샷의 위치를 ​​지정할 수는 있지만 스크린샷을 찍는 데 걸리는 시간은 0.04초로 기존보다 약간 느립니다. PyQt이지만 속도도 매우 빠릅니다.

    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")

Python 관련 기술 기사를 더 보려면

Python Tutorial

칼럼을 방문하여 알아보세요!

위 내용은 Python에서 스크린샷을 찍는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.