Retina & Responsive image 总结

摘要:
我以前写过视网膜和反应ageshttps://www.cnblogs.com/keatkeat/p/8409422.htmlresponsiveimagehttps://www.cnblogs.com/keatkeat/p/3896511.htmlretina但仍有一些零碎的东西是不完整的。我今天想做一个总结,并写下相关的内容,供以后复习。参考:https:/

之前就有写过关于 Retina 和 Responsive images

https://www.cnblogs.com/keatkeat/p/8409422.html responsive image

https://www.cnblogs.com/keatkeat/p/3896511.html retina

但是还有一些零零碎碎的东西不完整. 今天想来做个总结把有关联的写出来, 方便以后复习.

refer: 

https://juejin.cn/post/6844903839452102670 

https://segmentfault.com/a/1190000021476717 

retina 和 responsive image 里头有一堆的术语, 还有它们之前的关系, 我们一个一个来理清楚

1. 屏幕, 二极管, 物理像素 physical pixel

屏幕就是一块玻璃, 里面有很多的发光二极管 (灯泡). 3 个灯泡 (一个亮红色,一个亮绿色, 一个亮蓝色 RGB 原生) 组成一个最小的单元叫物理像素

一个物理像素负责显示 1 个颜色 (由 RGB 组合而来)

Retina & Responsive image 总结第1张

2. 屏幕尺寸

屏幕通常用 inch 来表示. 通常当我们说这个屏幕是 5.5 寸时,我们指的是它的斜线长度. 从左上角到右下角斜线的距离 

1 inch = 2.54 cm

Retina & Responsive image 总结第2张

算斜线的公式

Retina & Responsive image 总结第3张

3. 物理分辨率 resolution

就是指这个屏幕上有多少个物理像素 (灯泡)

4. Physical pixel 和 Dot 

pixel 和 dot 都是一个量词 (它不代表尺寸, 代表数量)

dot 用于印刷 (打印), pixel 用于屏幕. 

打印和屏幕有很密切的关系. 因为它们的任务都是做显示.

5. PPI 和 DPI 

PPI 是 pixel per inch, DPI 是 dot per inch

指的是在一个 inch 里面, 有多少个 pixel 或者 dot. (上面我说了, pixel 表示数量而不是尺寸)

6. retina, print high quality 

如果 1 个 5 寸的屏幕, 里面只有 1 个 pixel (3 个二极管), 那么它只能显示一个颜色. 它没有办法让你分辨出任何东西. 

如果我要你能在一个 5 寸的屏幕里面分辨出一个狗. 那么我至少需要几万个小小的二极管. 每个发出不同的颜色才能形成一个图像. . 

所以如果说我能把二极管做的很小很多, 那么看的人就可以分辨出很多细节了.

Retina & Responsive image 总结第4张

右边的图比较多格子 (二极管), 所以右边的图看去来就比较圆,不会那么颗粒. (二极管是方形的)

由此可见, 同一个屏幕尺寸下, 越高的 resolution 越好, 因为颗粒度会减少, 能表达的颜色更多, 当然也就越贵. 

Retina 屏幕是一个体验的指标. 当人的眼睛在适用的距离下无法看见屏幕的颗粒那么我们就可以说这个屏幕是 retina 屏幕.

这里有几个变量要搞清楚. 我们拿手机 (屏幕小) 和 电视机 (屏幕大) 来举例

retina 标准对手机屏幕 (比如 5 寸) 适用的距离比如是 30 cm. 那么我拿着一个 5 寸屏幕距离 30 cm 如果我看不见颗粒那么就是 retina 屏幕. 

如果我拿近近看 (10 cm), 看到颗粒度. 那无所谓, 因为它的标准就是适用 30 cm. 屏幕越大通常适用就越远. 

print high quality, 打印的时候我们可以选 high or standard quality. 其实道理也是一样的.

好的屏幕意味着有很多 pixel. 好的打印机意味着可以打出很多 dot (越多 dot 就越少颗粒, 越多颜色能显示, 就越美咯)

7. 小总结 

屏幕的 resolution 是它有多少个物理像素

PPI / DPI 是说 1 inch 里面有多少个像素 

PPI / DPI 越高越好. 好的定义是看不见颗粒, 颜色多 (分辨多)

8. 物理像素, 逻辑像素, device pixel ratio, responsive, width=device-width

网站需要跑在不同的屏幕上面, 每个屏幕的尺寸, resolution 都不同. 如果每一个屏幕都写一份逻辑那会增加很多开发成本和沟通成本

所以就有了逻辑像素. 这个有点像我们说 1 月 1 号是新年, 但是每个国家时间都不一样 (time zone), 但是我们依然会说 1 月 1 号就是新年的意思. 

css 就是表达 1 月 1 号, 不同的屏幕就是各个国家, 它们负责管理 timezone 然后在对的时间上倒数庆祝. 

css 写的就是逻辑像素. 屏幕厂商会依据屏幕的 PPI 设定一个逻辑像素来对应屏幕物理像素 (大概就是国家 timezone 的概念啦)

这个对应大部分是有规律的, 通常是 1, 2, 3, 4 倍, 又称为 device pixel ratio. 

看看 iphone 屏幕的设定

Retina & Responsive image 总结第5张

有了这个以后, 当我们在 meta 上面写 width = device-width 就是声明我们要开启这个自动转换. 我们的 css 写的逻辑像素就会依据不同屏幕对应到它们的物理像素去显示了. 

简单给一个例子 : 

假设逻辑像素表达是 width 500px, 假设有 2 个尺寸一样的屏幕, 1个物理像素是 500 一个是 1000 

如果没有转换的话, 第一个屏幕会占据 100%, 而第二个屏幕会占据 50% (小了, 用户就要 zoom) 

但是如果开启了 width=device-width 第二个屏幕也会是 100% 因为它的 DPR 是 2. 1 个逻辑像素对应 2 个物理像素. 

所以网页看上去就不会小.

9. 图片和 DPR 的关系

上面有说到, DPR 2 的情况下, 会使用 2 个物理像素来处理一个逻辑像素. 这个和图片被放大是类似的概念.

如果图片只有 500px, 但却要显示在 1000px 的物理像素上, 那么图片就会失真.

所以在高 DPR 的屏幕, 我们需要用到 3, 4 倍图. 

这就是 responsive 图片的其中一个重点.

responsive 其实范围比较广, 不只是因为 DPR. 屏幕有大有小,比例也不一样. 这个以后在讲

10. printing, pdf, puppeteer 

上面有讲到 printing 和屏幕是一个概念来的. 那我们来看看 puppeteer pdf 和 website 是怎么关系起来的. 

A4 纸就好比一个屏幕, 它有尺寸 (8.3" width, 11.7" height)

它的 PPI 取决于打印的 quality, 一般上打印机的标准是 < 150 DPI 属于质量差的 (类似手机屏幕 PPI 很低就不好咯), 300 DPI 是 standard

所以如果用屏幕来表示大概就是有个屏幕 8.3" width, 11.7" height 然后 PPI 是 300

puppeteer 里面的 pdf 是用 css 逻辑像素来表达的, 然后它的 DPR 是 96 (不能调的)

所以如果你要表达一个占据 a4 size 全部 width 那么就是 width = 8.3" x 96 = 796.8px, 然后它默认就是开启 width=device-width 的.

所以当要打印 300 DPI 的时候, 刚才的 796.8px 会自动 convert 物理像素 8.3" x 300. 

这里和 browser 有点区别就是 css 是对 puppeteer 固定的是 96 dpi 然后 puppeteer 再对最终打印的 300dpi 

我们要注意的是图片. 它没有 responsive 的概念, 我们只能 provide 最高清的图. 如果我们希望打印的结果是 300 DPI, 我们有一个 500 px 逻辑像素的 image 

then 我们的 image 本身至少要有 3 倍大 1500px 大. 因为 96 dpi 的 3 倍就大概是 300 dpi.

免责声明:文章转载自《Retina &amp;amp; Responsive image 总结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jquery幻灯片插件之owl.carousel.jsC# 开发规范下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Less(初步了解) flex(弹性盒,伸缩盒) 像素 视口(viewport) 手机像素 完美视口

Less(初步了解) 1.less是一门css的预处理语言。 2.less是一个css的增强版,通过less可以编写更少的代码实现更强大的样式。 3.在less中添加了许多的新特性,像对变量的支持、对mixin的支持。 4.less的语法大体上和css语法一致,但是less中增添了许多对css的扩展,所以浏览器无法直接执行less代码,要执行必须向将les...

通过鼠标选择视频区域,检测其中对象,进行跟踪(运动目标追踪检测):OpenCV+ Kalman filtering

项目要求:通过鼠标选择视频区域,检测其中对象,进行跟踪   提取相对于背景运动的目标,并将其与背景图像相分离的技术就是运动目标检测。运动目标检测的方法有三种,分别为: 帧间差分法 光流法 背景消除法   本次工作选择第三种方法:背景消除。它就是利用当前帧和背景图像的差分来检测目标运动区域,一般选取视频图像第一帧作为背景图像。   算法过程:   (1)...

Android 目前最稳定和高效的UI适配方案

Android系统发布十多年以来,关于Android的UI的适配一直是开发环节中最重要的问题,但是我看到还是有很多小伙伴对Android适配方案不了解。刚好,近期准备对糗事百科Android客户端设计一套UI尺寸适配方案,可以和小伙伴们详细的聊一聊这个问题。 Android适配最核心的问题有两个,其一,就是适配的效率,即把设计图转化为App界面的过程是...

Android各种屏幕分辨率(VGA、HVGA、QVGA、WQVGA、WVGA、FWVGA) 详解 .

http://blog.csdn.net/lucherr/article/details/8498400 看资料的时候经常看到各种VGA,全都混了,无奈,找了些资料总结了下,分享给大家: 这些术语都是指屏幕的分辨率。VGA:Video Graphics Array,即:显示绘图矩阵,相当于640×480 像素;HVGA:Half-size VGA,即:VG...

Android开发图片分辨率问题解决方案

dpi是什么呢?dpi是“dot per inch”的缩写,每英寸像素数。四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)一般情况下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。 dpi计算公式DPI=对角线的像素值/尺寸 手...

python图片黑白化

#!/usr/bin/env python#-*- coding:utf-8 -*- from PIL importImage im = Image.open(r"C:Userswangshaowei6Desktopwm.gif") #(将图片转换为8位像素模式) 和RGB模式相似 im.convert("P") his =im.histogram(...