使用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
相关产品推荐
相关产品推荐

