You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python MSS截取双屏截图,Monitor 1尺寸读取与实际不符

解答

原因

显示器1开启了系统显示缩放(推测为200%),mss默认读取的是系统逻辑分辨率,而截图时会自动适配物理分辨率,导致两者数值不符;显示器2无缩放或缩放比例为100%,所以读取与截图尺寸一致。

解决办法

方式1:指定显示器设备路径获取物理分辨率

直接针对目标显示器指定设备路径,绕开逻辑分辨率的读取:

import mss

with mss.mss(display="\\\\.\\DISPLAY1") as sct:
    monitor_info = sct.monitors[1]
    print(f"显示器1物理分辨率:{monitor_info['width']}x{monitor_info['height']}")
    # 截取显示器1的屏幕
    sct.shot(mon=1)

方式2:启用程序高DPI感知

通过代码让程序支持高DPI,使mss直接读取物理分辨率(仅Windows系统适用):

import ctypes
try:
    # 设置进程高DPI感知,2表示每显示器高DPI感知
    ctypes.windll.shcore.SetProcessDpiAwareness(2)
except Exception:
    pass

import mss
sct = mss.mss()
print(f"显示器1物理分辨率:{sct.monitors[1]['width']}x{sct.monitors[1]['height']}")

内容的提问来源于stack exchange,提问作者unfestive chicken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 23:50:14