好物设计- 实现区域图片变化自动截图

2023-12-21 15:29:32

工具–Py即可

重点怎么获取窗口句柄?
使用 spyxx 可以获得句柄 (相当一个窗口的ID,无论窗口怎么变化ID不变我们都可以找到该窗口的详细信息)
替换句柄就可以,也可以不用句柄之间改截图区域
实战图片
在这里插入图片描述

import pygetwindow as gw
import pyautogui
import time
import numpy as np

def calculate_image_difference(image1, image2):
    gray_image1 = image1.convert('L')
    gray_image2 = image2.convert('L')

    array1 = np.array(gray_image1)
    array2 = np.array(gray_image2)

    hist_diff = np.sum(np.abs(np.histogram(array1, bins=256, range=(0, 256))[0] - np.histogram(array2, bins=256, range=(0, 256))[0]))
    diff_percentage = (hist_diff / float(array1.size)) * 100

    return diff_percentage

# 使用窗口句柄
window_handle = 0x000715F0

while True:
    # 获取窗口对象
    window = gw.Window(window_handle)

    # 获取窗口的位置和大小
    x, y, width, height = window.left, window.top, window.width, window.height

    # 设置要截图的区域
    region = (x, y, width, height)

    # 获取当前截图
    current_screenshot = pyautogui.screenshot(region=region)

    # 等待一段时间,可以根据实际情况调整
    time.sleep(1)

    # 再次获取窗口的位置和大小
    x, y, width, height = window.left, window.top, window.width, window.height

    # 再次设置要截图的区域
    region = (x, y, width, height)

    # 再次获取截图
    updated_screenshot = pyautogui.screenshot(region=region)

    # 计算图像差异百分比
    diff_percentage = calculate_image_difference(current_screenshot, updated_screenshot)

    # 如果差异超过20%
    if diff_percentage > 20.0:
        # 保存当前截图
        timestamp = time.strftime("%Y%m%d%H%M%S")
        file_name = f"screenshot_{timestamp}.png"
        updated_screenshot.save(file_name)
        print(f"截屏已保存为 {file_name}, 图像差异:{diff_percentage:.2f}%")

如果想一点像素的改变也截图可以更改这里,改为0就可以

# 如果差异超过20%
    if diff_percentage > 20.0:
        # 保存当前截图
        timestamp = time.strftime("%Y%m%d%H%M%S")
        file_name = f"screenshot_{timestamp}.png"
        updated_screenshot.save(file_name)
        print(f"截屏已保存为 {file_name}, 图像差异:{diff_percentage:.2f}%")

文章来源:https://blog.csdn.net/L2489754250/article/details/135130710
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。