ホームページ  >  記事  >  バックエンド開発  >  Pythonでスクリーンショットを撮る方法

Pythonでスクリーンショットを撮る方法

尚
オリジナル
2019-06-29 15:05:317860ブラウズ

Pythonでスクリーンショットを撮る方法

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

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 とタイトルを出力します。タイトルを使用してスクリーンショットを撮ることができます。

    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.04 秒で、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。