图片在显示器上在为什么会糊?PPI、DPI、Retina

news/2025/1/24 13:03:25/文章来源:https://www.cnblogs.com/DSYR/p/18689385

原文链接:https://tingxuanr.github.io/note/图片在显示器上在为什么会糊ppidpiretina/#more
摘要:有关图片的缩放及Retina屏幕介绍

图片缩放

图片是由一个个的像素点组成,屏幕也是一个个的像素点组成,如果屏幕的像素点和图片的像素点能够一一对应,那么图片就能够正常显示。

比方说有一个27英寸1920x1080的屏幕,图片分辨率为900x600,图片以点对点的形式显示在屏幕中央;如果换成一个27英寸2560x1440的屏幕,那么每个像素点的面积就变小了,如果还以点对点的形式显示,图片也会变小,此时就需要通过缩放来显示图片。

缩放计算方式:

在 1080P 屏幕上,显示比例为:水平方向:900 / 1920 ≈ 46.9%;垂直方向:600 / 1080 ≈ 55.6%

在 1440P 屏幕上,要保持相同的显示比例,图片大小为:水平方向:2560 × 46.9% ≈ 1200 像素;垂直方向:1440 × 55.6% ≈ 800 像素。

也就是从900x600放大到1200x800的尺寸。

一般系统采用的是双线性插值算法来进行拉伸填充,这样就会使得图片变得模糊。如果把屏幕换成3840x2160,就可以用屏幕的四个像素点替代图片的一个像素点,这就是临近像素采样算法

插值算法

正是插值算法,使得图片失真。

双线性插值基于周围四个像素点的加权平均,提供了更平滑的结果,但是会导致图片模糊。而临近像素采样直接复制最近的原始像素值,图像不会模糊但是边缘可能有明显锯齿。如假设下面2x2像素的图片要放大到4x4像素(实际的值并不准确,只是示意):

原始 临近像素采样 双线性插值
1 3
5 7
1 1 3 3
1 1 3 3
5 5 7 7
5 5 7 7
1.00 2.00 3.00 3.00
3.00 4.00 5.00 5.00
5.00 6.00 7.00 7.00
5.00 6.00 7.00 7.00

Windows的DPI导致软件图片及字体模糊

在最早期的时候,屏幕的PPI和打印用的DPI是一致的。一个图片在屏幕上有72个像素,打印机打印出来也是72个点。但是后来电脑屏幕比纸张要大不少,而且人与屏幕的距离也比人与纸张的距离要远,所以同样的像素点在大屏幕上显得就小了。于是Windows就把图片进行放大,一个72x72像素的图片,Windows会放大成96x96。

经过不断的发展,Windows有了现在的几个默认放大倍数:100%、125%、150%、175%、200%,分别对应96DPI、120DPI、144DPI、168DPI、192DPI。大部分应用都默认使用的96DPI,屏幕PPI与系统DPI的比值就是应用UI的放大倍率,所以当屏幕的PPI与系统的DPI比值越接近1,应用UI显示就越合适。但是使用非整数倍缩放,会导致因为线性插值算法导致的图片或文字模糊失真。

比方说,屏幕尺寸23.8英寸,分辨率1920x1080,计算得出PPI为

\[\sqrt{(1920^2+1080^2)/(23.8^2)} ≈ 92.6 PPI \]

那么放大倍率选择100%就刚好合适。屏幕尺寸27英寸,分辨率3840*2160,计算得出PPI为

\[\sqrt{(3840^2+2160^2)/(27^2)} ≈ 163 PPI \]

, 放大倍率选择175%,此时DPI/PPI=168/163≈1.03,应用UI就和开发者想让你看到的大小差不多,但图片和文本可能因为非整数缩放而模糊;如果选择200%缩放,此时DPI/PPI=192/163≈1.18,界面元素比开发者想让你看到的大18%,虽然图片文字不会模糊,但应用UI会显示的更少。

不过,对于使用而言,UI大小合适应该是优先考虑的,所以缩放比例尽量还是让PPI/DPI接近1更合适。

除了DPI缩放,Windows还有GDI。这种缩放会先以整数倍对矢量文本和图片进行缩放,然后再进行DPI的缩放比。如设置了电脑缩放比例为175%,那么Windows会先以2倍缩放,再进行1.75倍缩放。Windows上的磁盘管理界面、环境变量等界面都还是用的GDI缩放。但是不是所有内容都能进行GDI缩放,开启后可能会让元素错位甚至消失。

PPI多少合适

由于人眼对屏幕清晰度的感知会有极限。在一定距离下,PPI超过某个值后人眼就感受不到屏幕的颗粒感。对于标准的5.0视力,可以在5m距离看清视力表第11行。

苹果的Retina视网膜屏幕定义就是:当设备距离人眼 10-12 英寸(约 25-30 厘米)时,像素密度达到 300 PPI 以上,人眼就无法分辨单个像素点。

Retina计算公式为: a = 2 × arctan(h/2d)。其中a为人眼所见单个像素的视角(以弧度表示),一般为1/60度 = 1/60 x π/180 = π/10800 弧度;h为像素间距,即相邻像素中心之间的距离,单位英寸;d 人眼与屏幕的距离,单位英寸。

可以推出h = 2d × tan(a/2) ;而PPI = 1/h,也就是一英寸距离内像素个数。

按照这个公式,30cm(约为30/2.54 = 11.81英寸)距离下,h = 2 x 11.81 x tan(π/21600) = 0.003435;屏幕PPI = 1 / h = 291.12。

所以iPhone4发布会上把iPhone4的屏幕

\[ppi =\sqrt{(640^2+960^2)/(3.5^2)} ≈ 329 \]

定义为Retina屏幕。

同样显示器观看距离为60cm,PPI至少要达到 1 / (2 x 60 / 2.54 x tan (π/21600)) ≈ 146。常见的27英寸4K显示器是能够达到这个要求的。

另外,由于OLED像素点的排列方式,它的ppi是需要打折扣。方便起见可以按80%计算,比方如果宣传的OELD屏幕ppi为300ppi,实际的为300x0.8=240ppi。

参考链接

【硬件科普】换了更高分辨率的显示器,软件界面反而模糊-Windows缩放详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/874694.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

执子之手与子偕老:镌刻在时光深处的爱情传奇

执子之手与子偕老:镌刻在时光深处的爱情传奇“死生契阔,与子成说。执子之手,与子偕老。” 这出自《诗经・邶风・击鼓》的千古名句,如同一首跨越千年的悠扬情歌,萦绕在人类情感的天际,描绘出爱情最纯粹、最美好的模样,承载着人们对永恒相伴、不离不弃的深深期许。它不仅仅…

二维数点问题

二维数点问题。P10814 【模板】离线二维数点 询问区间 \([l,r]\) 内,在值域为 \([0,x]\) 中数的个数。 想象这是个二维平面,我们要求的就是矩形内点的个数。通常用 cdq 做,将询问拆成两个点,将点按照x坐标排序,按照y坐标加入到树状数组中(为了满足第二条限制),这时就依次…

CS162 23Fall总结

CS 162 23Fall Lab 总结 PintOS是一个x86架构的教育用操作系统,它支持多线程,加载并运行用户程序,以及文件系统。骨架代码只提供了很简单的实现,本Lab需要丰富并增强这些模块的功能。本实验提供Bochs2和QEMU3模拟器模拟x86 CPU和相应外设来运行并调试PintOS.PintOS源码结构…

《汇编语言》阅读笔记

如题汇编语言 首先,我必须赞扬王爽老师,这是我见过写的最好的教科书了. 然后要注意,汇编语言这本书的前提是8086PC机十六位处理器.还要学x86和x64以及其他奇奇怪怪的架构的汇编 全称 AH&AL=AX(accumulator):累加寄存器 BH&BL=BX(base):基址寄存器 CH&CL=CX(co…

【unity】学习制作2D横板冒险游戏-3-

添加野猪添加刚体2D组件,碰撞组件,该碰撞组件是确保野猪能跟地面碰撞添加玩家图层和敌人图层,并应用,使野猪和玩家不会彼此被推着走碰撞剔除中选择Player和Enemy再增加一个碰撞组件当作触发器,设置如下,该碰撞组件是确保人物和怪物的互动基本属性及其计算 再如图路径下创建…

远控流畅游戏,我用过最棒工具ToDesk

孤独乏味人又懒,能够干嘛来消遣?手游、端游都好玩,没有高端设备在身边,也是能够轻松玩!究竟怎么实现的?其实就是通过ToDesk这种专业的远程控制软件来随时随地操作异地的目标设备从而帮助实现更丝滑给力的远程游戏畅玩体验!当然,用户能够借助完成这需求的辅助工具并不止…

C# Odbc Informix读取中文方法

一。 部署好informix服务器后 二。 在windows主机安装好Informix Client-SDK, 这个软件客户端时免费的,可以在官网下载 三。配置好ODBC连接 1.用户名密码服务端口自行填写 2.关于客户语言的配置要使用以下参数: Client Locale -> en_US.CP1252 Database Locale -> en_…

ToDesk远程连接几项模式区别何在?

对于很多用过ToDesk远程控制软件进行随时随地跨系统、跨设备操作的小伙伴们来说,它无疑能解决做种场景下问题,无论是在职场工作中,还是日常生活中,均能带来很多便捷!虽然轻松使用很简单,但很多所不知道的是其实应对不同的情况,选择不同的连接模式更有益!以下木木小编就…

如何在网站后台修改首页?

修改网站后台首页通常涉及对后台管理界面的调整。以下是详细步骤:登录后台:使用管理员账号登录网站后台管理系统。 进入模板管理:在后台管理系统中找到“模板管理”或“模板文件管理”选项。 编辑模板文件:找到后台首页的模板文件(如index.htm或index.php),使用代码编辑…

一些关于软件测试中登录模块的测试用例

以下是一份针对软件测试中登录模块较为完整的测试用例,涵盖了各种常见情况,尽量保证较高的覆盖率:一、功能测试1. 正常登录 2. 用户名错误 3. 密码错误 4. 用户名和密码都错误 5. 用户名和密码为空 6. 仅用户名为空 7. 仅密码为空 8. 用户名和密码长度极限值 9. 记住用户名…

如何修改网站管理员admin的信息?

登录网站后台:使用管理员账号(通常是admin)登录到网站的后台管理界面。进入用户管理页面:在后台管理界面中,找到“用户”、“用户管理”或类似的菜单选项,点击进入用户管理页面。找到管理员账号:在用户管理页面中,找到管理员账号(通常是admin),点击账号名称或编辑按…

如何在网站上修改源代码?

要在网站上修改源代码,您可以按照以下步骤进行操作:确定要修改的代码:确定您想要修改的网站源代码文件。 找到代码文件:根据您的网站结构,找到包含要修改代码的文件。 编辑代码文件:使用文本编辑器或专业的网页设计工具,编辑代码文件中的代码。 保存修改:修改完成后,保…