逻辑像素与物理像素引发学习型探索

news2024/11/23 22:02:43

文章目录

    • 目的
    • 关于像素
    • 从像素到分辨率
    • DP(设备像素)- 物理像素
    • DIP(逻辑像素)- 设备独立像素
    • CSS 像素
      • 屏幕特性
    • DRP(设备像素比)
    • PPI(Pixels Per Inch ) - 像素密度
      • 屏幕像素密度PPI

目的

做一个前端或或者产品开发者, 在涉及到ui方面, 难免会遇到不同分辨率下, 同一个ui会有不同在视觉上差异, 弄懂这些对于我们来说着非凡意义。
同时也顺便去了解像素密度, 分辨率, 屏幕尺寸,设备像素比等相关概念。

关于像素

在这里插入图片描述
上面的像素图,我们都很熟悉,可能小时候也做过像素拼豆豆这样的手工。其实这就是在电脑上构成图片显示出来的原理,电脑上显示的图像就是由一个个有色彩的小方格拼接起来组成的,那么为什么我们一眼看不出来呢?那是因为电脑上划分的一个个的小方格太小了,很密集,拼接起来就欺骗我们的肉眼看起来就是一条条线画出来的图了。

比如我们正常看到的图片是这样的:
在这里插入图片描述
但实际上你放大 n 倍去看,看到的是这样的:
在这里插入图片描述
看到了吧,也是和我们常见的像素图是一样的,也是一格格地拼凑起来的,这么小小的一个图片,拼凑成其的小格子有好几万个,所以在我们肉眼看来就成了线条。
上述的一个个的小格子被定义为一个单位,叫做 像素 ,2像素就是指占据了两个小格子的大小,当然,我们描述一个图片占的小格子数总不能一个个地数小格子吧,图片是矩形,因此常常描述一个图片尺寸时就说多少乘多少像素,像素就是小格子,比如上面的这个图片的尺寸就是 300 * 300 像素,也就是说该图片的长、宽都有300个小格子,该图片一共占 300 * 300 = 90000 个小格子。
因此小格子就是像素,1像素 就是一个小格子的大小,你若问那 1像素 到底有多大,多少厘米或毫米? 停,都说了小格子是个矩形,要论大小也得是多少平方厘米或平方毫米,但是小格子的大小就是 1像素,像素是个像厘米或毫米一样的定义好的单位,专门用于电子屏幕上描述图形尺寸的单位,但是像素不像厘米、毫米等长度单位一样有固定的大小,像素是没有固定大小的,奇怪吧,但事实就是这样,只要知道 1像素 就是一个小格子就可以了。

从像素到分辨率

知道了 像素 ,再来讨论下屏幕尺寸
关于各种设备屏幕的尺寸是以 英寸 为单位的,英寸是一个长度单位,是有固定大小的,可以去百度换算下单位成厘米看看有多大。比如我的电脑尺寸是 15.6 英寸,注意各种电子设备的屏幕尺寸指的是屏幕斜对角线的大小,不然你想,屏幕不也是个矩形吗?怎么能用一个长度单位描述呢?应该是 长度 * 宽度 描述吧。由于显示屏幕不是胡乱设计比例的,是有固定比例的,如 16 : 9 、4 : 3 等等,因此屏幕给出斜对角线的大小,具体屏幕矩形的长宽就可以根据屏幕的设计比例计算出来
现在显示屏准备好了,如何将图片显示出来呢?那就将屏幕划分成一个个的小格子,然后在对应位置给小格子上色,全部上完色,图片自然就出来了。
那么屏幕如何划分小格子呢?就像我们画表格一样,横着、竖着加线条,就划分成了一排排的小格子。那么将 长和宽 分别划分成多少个小格子呢?这就涉及到了分辨率,分辨率就是用于描述屏幕长度和宽度分别划分成多少个小格子。比如常见的分辨率是 1920 * 1080 ,实际含义就是屏幕的宽有 1920 个小格子,长有 1080 个小格子,整个屏幕的小格子数就是 1920 * 1080 = 2073600 个。足够欺骗我们的肉眼了。
所以分辨率就是指显示屏的长宽均划分成多少个小格子,小格子的单位是像素,因此又称屏幕分辨率为 1920 * 1080 像素。分辨率就以像素为单位来衡量了。
分辨率影响了什么?分辨率影响了我们的视觉,若屏幕分辨率很低,如 15.6 英寸的显示屏分辨率为 100 * 100 像素,那么一个小格子得占多大,肉眼就看得到小格子的轮廓了,那体验多不好,就像在看像素图一样难受。此时若将上述的图片显示在 100 * 100 分辨率的 15.6 英寸的屏幕上,能显示的全吗?上述图片可是占 300 * 300 像素的大小的,只能显示 1 / 3的图片。
这也就是说为什么同样的图片在不同分辨率的显示上大小不一样了,因为这个图片占的小格子数是一定的,但是每个设备的像素(小格子)大小不一样,显示的图片大小就不一样。因此 1像素 的具体大小在不同的设备上是不一样的,同样的屏幕尺寸,分辨率越高的,划分的小格子数越多,同一个图片显示出来的大小就越小,但是会越清晰。反之则很大但很模糊。

参考博文

DP(设备像素)- 物理像素

  • 物理像素代表屏幕上有多少个点,比如1080x2340表示屏幕水平方向一排有1080个物理像素点,垂直方向一排有2340个物理像素点。
  • 任何设备的物理像素的数量是固定的,即一个设备的分辨率是固定的,且任何一款设备上1物理像素的大小是不会改变的(单位pt)。
  • 不同设备上1物理像素的大小可能是不一样的。

在这里插入图片描述

DIP(逻辑像素)- 设备独立像素

  • 逻辑像素与css像素一样是一种虚拟的像素,也就是说css像素是逻辑像素的一种。它是操作系统定义的一种像素单位,应用程序将设备像素比告诉操作系统,操作系统再将独立设备像素转为设备像素。除此,平时描述一张图片宽高时一般用 200px * 100px,这里的px也是逻辑像素。

为啥要有DIP呢?
因为物理像素仅代表像素点的个数,并没有有规定一个点实际的尺寸是多少。假设有一个按钮,宽度用100个物理像素表示,因屏幕物理像素排列方式和密度的差异,不同屏幕上实际的视觉宽度必然不一样。而逻辑像素相同就表示希望按钮在不同屏幕上看起来一样大。主要是兼容不同物理尺寸, 分辨率下同一个ui显示大小一样, 不会有太大差别。

CSS 像素

  • css像素是浏览器中持有的概念,用来精确网页上的内容,css像素是逻辑像素的一种。
  • 由于不同的物理设备的物理像素的大小是不一样的,所以css认为浏览器应该对css中的像素进行调节,使得浏览器中 1css像素的大小在不同物理设备上看上去大小总是差不多 ,目的是为了保证阅读体验一致。为了达到这一点浏览器可以直接按照设备的物理像素大小进行换算,而css规范中使用“参考像素”来进行换算。
  • 一个width为200px的元素,它占据了200个css像素,但200个css像素占据多少个物理像素取决于屏幕的特性(是否高密度,即像素比)和用户缩放行为

屏幕特性

  • 在普通屏幕(pc端)下1个CSS像素对应1个物理像素,而在Retina屏幕下,1个CSS像素对应的却是4个物理像素。所谓的一倍屏、二倍屏(Retina)、三倍屏,指的是设备以多少物理像素来显示一个CSS像素,在不增加显示器宽高的情况下,使用2个或更多物理像素来显示1个CSS像素就可以更清晰,也就是说,多倍屏以更多更精细的物理像素点来显示一个CSS像素点。

在这里插入图片描述

  • 一个逻辑像素里可能包含1个或者多个物理像素点,包含的越多则屏幕看起来越清晰
    在这里插入图片描述
    在这里插入图片描述

DRP(设备像素比)

  • 设备像素比(dpr 描述的是未缩放状态下,物理像素和CSS像素的初始比例关系
  • 设备像素比(dpr)=物理像素(dp) / 设备独立像素(dip)
  • 设备像素比(dpr) 是指在移动开发中1个css像素占用多少设备像素,如2代表1个css像素用2x2个设备像素来绘制。当这个比率为1:1时,使用1个设备像素显示1个CSS像素。当这个比率为2:1时,使用4个设备像素显示1个CSS像素,当这个比率为3:1时,使用9(3*3)个设备像素显示1个CSS像素

PPI(Pixels Per Inch ) - 像素密度

屏幕像素密度PPI

  • 屏幕像素密度(ppi)=对角线分辨率 / 对角线尺寸。
  • 屏幕像素密度(ppi)是指一个设备表面上存在的像素数量,它通常以每英寸有多少像素来计算。
  • 屏幕像素密度与屏幕尺寸和屏幕分辨率有关,在单一变化条件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。
    在这里插入图片描述
    eg:
    在这里插入图片描述
var 斜边尺寸 = V(1920^2+1080^2) V代表开根号
var ppi = 斜边尺寸/5.5
ppi = 401ppi
ppi用作显示设备的工业标准,设备像素比与ppi相关,一般是ppi/160的整数倍。

表示的是每英寸所拥有的像素数量。因此PPI数值越高,即代表显示屏能够以越高的密度显示图像。当然,显示的密度越高,拟真度就越高。我们经常说的视网膜屏幕(Retina),之所以看起来清晰度高,是因为其 ppi 很高的 。而图像、色彩还原度高是其 dpr 比一般的设备高;
以 iphone6s 为例:
设备宽高为 375×667 ,可以理解为设备独立像素(逻辑像素 或者 css 像素)。
dpr = 2(也就是我们通常说的“二倍屏”),可以得出其物理像素应该是其逻辑像素的 2 倍,750 * 1334。

在这里插入图片描述

参考博文
参考博文二

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Simulink 封装

快捷键: Edit Mask:CtrlM Look Under Mask:CtrlU 封装之后的模型: Edit Mask界面: 双击模块后的提示界面: 封装的模块内部:

防火墙两台设备对接,隧道成功建立后,总部子网pc不能ping通分部子网,怎么排查解决?

环境: 总部 深信服防火墙 8.0.75 AF-2000-FH2130B-SC 分部 深信服防火墙 8.0.75 AF-2000-FH2130B-SC 问题描述: 防火墙两台设备对接,隧道成功建立后,总部子网pc不能ping通分部子网,怎么排查解决?分部子网可以ping通总部子网。 两台防火墙之前是做热备的,配置一样,…

C语言编程题目及答案分享——持续更新

1.输入一个球的半径&#xff0c;计算这个球的表面积和体积&#xff0c;输出计算结果 #include<stdio.h> const float PI3.1415926; float mianji(float r){float s;s 4*PI*r*r;return s; } float tiji(float r){float s;s 4*PI*r*r*r/3;return s; }int main(){float r…

ARINC825规范简介

ARINC825规范简介 机载CAN网络通用标准 ARINC825规范全称为机载CAN网络通用标准&#xff08;The General Standardization of CAN for Airborne Use&#xff09;。顾名思义&#xff0c;ARINC825规范是建立在CAN物理网络基础上的高层规范。CAN网络使用共享的双绞电缆传输数据&…

如何套用模板制作大屏?

在山海鲸可视化的资源中心里内置了大量的二维、三维大屏模板&#xff0c;大家可以根据需要找到自己想要的模板&#xff0c;然后点击下载直接进行使用。 有需要可自行前往哔哩哔哩账号中观看相关内容的视频教程↓↓↓ 山海鲸可视化的个人空间-山海鲸可视化个人主页-哔哩哔哩视频…

Web自动化测试 —— 关键数据记录

记录关键数据的作用 内容作用日志1、记录代码执行情况&#xff0c;方便复现场景&#xff0c;也可以作为bug依据截图1、断言失败或成功的截图&#xff1b;2、异常截图达到丰富报告的作用&#xff1b;3、可以作为bug依据page source1、协作排查报错时元素是否存在 一、行为日志记…

UI自动化测试单例实现报错:AttributeError: ‘NoneType‘ object has no attribute ‘get_driver‘

UI自动化测试单例实现报错&#xff1a;AttributeError: ‘NoneType’ object has no attribute ‘get_driver’ from selenium import webdriverfrom configs.env import Envclass Singleton1(object):_instance Nonedef __new__(cls, *args, **kwargs):print(判断hasattr现在…

容器技术所涉及Linux内核关键技术

目录 一、容器技术前世今生 1.1 1979年 — chroot 1.2 2000年 — FreeBSD Jails 1.3 2001年 — Linux VServer 1.4 2004年 — Solaris容器 1.5 2005年 — OpenVZ 1.6 2006年 — Process容器 1.7 2007年 — Control Groups 1.8 2008年 — LXC 1.9 2011年 — Warden 1…

进程的内存映像

组成部分 代码段&#xff1a;即程序的二进制代码&#xff0c;只读&#xff0c;可被多个进程共享数据段&#xff1a;包括全局变量和静态变量进程控制块PCB&#xff1a;在系统区&#xff08;内核区&#xff09;&#xff0c;操作系统通过PCB来控制和管理进程堆&#xff1a;用来存放…

后端开放从小白到大佬之Linux的命令(一):nohup,详解底层!!!

文章目录 nohupnohup命令初识nohup命令语法nohup的原理如何查看nohup的进程ps | greppgrepjobspu -ux 如何关闭进程killpkill 结尾 nohup nohup命令初识 在 Linux 中&#xff0c;nohup 命令 用于在后台运行命令&#xff0c;并将其输出重定向到一个文件中&#xff0c;即使退出…

一文教你学会ArcGIS Pro地图设计与制图系列全流程(2)

ArcGIS Pro做的成果图及系列文章目录&#xff1a; 系列文章全集&#xff1a; 《一文教你学会ArcGIS Pro地图设计与制图系列全流程&#xff08;1&#xff09;》《一文教你学会ArcGIS Pro地图设计与制图系列全流程&#xff08;2&#xff09;》《一文教你学会ArcGIS Pro地图设计与…

PHP 图书资料管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 图书资料管理系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 PHP 图书资料管理系统mysql数据库web结构apach 代码 https://download.csdn.net/down…

pip install open-interpreter报错,无法安装

标题pip install open-interpreter报错&#xff0c;无法安装 ERROR: Could not find a version that satisfies the requirement open-interpreter (from versions: none) ERROR: No matching distribution found for open-interpreter 另外发现自己换了很多国内镜像源&#x…

提升推广效果的秘密武器,快速学会电子传单制作

随着科技的发展&#xff0c;电子传单成为了企业宣传的重要工具之一。相比传统纸质传单&#xff0c;电子传单更加灵活、便捷&#xff0c;并且能够通过网络快速传播。想要制作一份精美的电子传单&#xff0c;我们可以利用一些专业的H5制作平台/工具&#xff0c;下面就来介绍一下具…

【考研数学】概率论与数理统计 —— 第三章 | 二维随机变量及其分布(2,常见的二维随机变量及二维变量的条件分布和独立性)

文章目录 引言四、常见的二维随机变量4.1 二维均匀分布4.2 二维正态分布 五、二维随机变量的条件分布5.1 二维离散型随机变量的条件分布律5.2 二维连续型随机变量的条件分布 六、随机变量的独立性6.1 基本概念6.2 随机变量独立的等价条件 写在最后 引言 有了上文关于二维随机变…

delphi中使用CADVCL 10.0 Enterprise控件解析DXF文件生成图片保存到本地

使用案例demos中GettingStarted案例 修改OnClick方法 更换代码 varvDrawing: TsgCADDXFImage;I: Integer;vEnt: TsgDXFEntity;vDXFImage:TsgCADImage;Bitmap: TBitmap;jpg: TJpegImage; beginvDrawing : TsgCADDXFImage.Create;vDrawing.LoadFromFile(d:\Entities.dxf);for …

创新驱动的未来:探索企业专利信息API的应用

引言 在今天的商业环境中&#xff0c;创新是企业成功的关键因素之一。创新不仅可以为企业带来竞争优势&#xff0c;还可以促使行业不断发展和演进。而要实现创新&#xff0c;保护知识产权、了解市场动态以及获得有关竞争对手创新活动的信息至关重要。企业专利信息API为企业提供…

springboot+vue智能诊后随访系统 java医院挂号预约诊断系统

本系统是基于java前端架构Vue用java编程语言及javascript、CSS、HTML语言进行编写设计并实现相关功能的。 设计步骤及措施&#xff1a; &#xff08;1&#xff09;确定项目名称、项目研究内容&#xff0c;开题报告提交及修改。 &#xff08;2&#xff09;项目开发准备&#xff…

浅谈软件测试面试一些常见的问题

一、简历及岗位匹配度 说到简历&#xff0c;其实这一点是很重要但又被很多职场小白忽视的问题。经常有人说我投了很多简历&#xff0c;但是没有公司给我打电话&#xff0c;怎么办&#xff1f; 首先&#xff0c;应该明白的一点&#xff1a;面对求职市场的激烈竞争性&#xff0…

最新AI创作系统ChatGPT商业运营源码+AI绘画+详细图文搭建部署教程

一、AI创作系统 SparkAi系统是基于很火的GPT提问进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT系统&#xff1f;小编这里写一个详细图文教程吧&#x…