【Python】获取屏幕真实分辨率、缩放后的分辨率以及缩放比例

您所在的位置:网站首页 怎么用直尺画直线 【Python】获取屏幕真实分辨率、缩放后的分辨率以及缩放比例

【Python】获取屏幕真实分辨率、缩放后的分辨率以及缩放比例

2024-07-12 16:11:04| 来源: 网络整理| 查看: 265

如果你在网上去搜如何用 Python 获取屏幕分辨率,那么肯定一堆人会告诉你用 win32 接口的 GetSystemMetrics 函数就可以了。

这虽然没错,但其实有一点疏漏。就是 GetSystemMetrics 获取的只是经过系统记录的分辨率,而非物理真实的分辨率。

所以会出现这种偏差,是因为在windows系统里面有一种叫做缩放的神奇东西,那些屏幕分辨率比较高的朋友对这玩意应该不陌生。

在这里插入图片描述

上图是我的电脑的设置,我设置的是 2560x1600,缩放率为 200%,所以调用 GetSystemMetrics 的结果为:

In [1]: from win32.win32api import GetSystemMetrics In [2]: GetSystemMetrics(0), GetSystemMetrics(1) Out[2]: (1280, 800)

我随便修改一下缩放,设置缩放比例为 250%:

在这里插入图片描述

这回再次运行的时候就变了:

In [4]: GetSystemMetrics(0), GetSystemMetrics(1) Out[4]: (1024, 640)

注意到规律了吗?

( 1280 , 800 ) × 2 = ( 2560 , 1600 ) ( 1024 , 640 ) × 2.5 = ( 2560 , 1600 ) (1280, 800) \times 2 = (2560, 1600)\\ (1024, 640) \times 2.5 = (2560, 1600) (1280,800)×2=(2560,1600)(1024,640)×2.5=(2560,1600)

那如果想要获得未经过缩放的分辨率 2560 x 1600 咋办呢?可以这么干:

In [9]: from win32 import win32api, win32gui, win32print In [10]: import win32con In [11]: hDC = win32gui.GetDC(0) In [12]: w = win32print.GetDeviceCaps(hDC, win32con.DESKTOPHORZRES) In [13]: h = win32print.GetDeviceCaps(hDC, win32con.DESKTOPVERTRES) In [14]: w, h Out[14]: (2560, 1600)

最后附上完整的代码。

from win32 import win32api, win32gui, win32print from win32.lib import win32con from win32.win32api import GetSystemMetrics def get_real_resolution(): """获取真实的分辨率""" hDC = win32gui.GetDC(0) # 横向分辨率 w = win32print.GetDeviceCaps(hDC, win32con.DESKTOPHORZRES) # 纵向分辨率 h = win32print.GetDeviceCaps(hDC, win32con.DESKTOPVERTRES) return w, h def get_screen_size(): """获取缩放后的分辨率""" w = GetSystemMetrics (0) h = GetSystemMetrics (1) return w, h real_resolution = get_real_resolution() screen_size = get_screen_size() print(real_resolution) print(screen_size) screen_scale_rate = round(real_resolution[0] / screen_size[0], 2) print(screen_scale_rate)

显示分辨率: (2560, 1600) 缩放后的分辨率: (1280, 800) 缩放比率: 2.0



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭