[转帖]十分钟快速理解DPI和PPI,不再傻傻分不清!
十分钟快速理解DPI和PPI,不再傻傻分不清!
https://baijiahao.baidu.com/s?id=1605834796518990333&wfr=spider&for=pc
关于UX测试相关的: 之前一直搞的不是很清楚 这个百家号的解释挺好的 简单转帖一下 以后仔细研究,
设计师充电站
72DPI的图片拿去打印会糊吗?手机拍出来的照片是多少DPI?PS里显示72PPI为什么另存为JPG就变成96DPI了?
类似的问题层出不穷。本站很多篇文章都讲到了DPI和PPI的问题,但似乎还是不能很好地解释。这里我们以“一次性将这个问题说清楚”为目的,来好好聊聊DPI和PPI。
概念问题
不论是DPI还是PPI,实际都是一种换算的概念,即将图片承载的信息换算为现实中的图片(即人眼能实际看到的图像)。DPI和PPI的区别在于换算的途径不同,DPI面向的是印刷受体,而PPI面向的是荧幕。
1.PPI
PPI是英文Pixels Per Inch的缩写,意为像素每英寸。英寸是常用的长度单位,大约相当于2.54厘米。而像素是专用于荧幕的概念,指的是荧幕可以解析的最小的点。因此,PPI值得是像素在荧幕上的密度,PPI越高图像就越清晰。
举例来说,如果电脑屏幕是2K分辨率,即1920×1080像素,它的图像宽为1920像素。而如果这个电脑屏幕的物理宽度是19.2英寸,电脑屏幕是分辨率就是1920/19.2=100PPI。
2.DPI
DPI是英文Dots Per Inch的缩写,意为点每英寸。应粗你还是那个英寸,但是点的意义有很多。一般来讲,你可以把Dot理解为取样点,即物理设备可以解析的最小单位。在印刷时,它就可以作为印刷网点,而在鼠标等电子设备上,可以理解为最小操作阈值(即设备会把多么远的两个点当作一个点来处理)。
我们仍然拿1920×1080像素的图片来举例子,如果印刷设备的解析能力刚好是100DPI,而且你要印制的纸张尺寸刚好是19.2英寸,那么印刷设备就可以刚好把一个像素作为一个取样点,印刷完成后图片的保真度是百分之百(也就是图片所有的视觉信息都被印刷出来了)。在大多数情况下,这几个数值都不那么整好,因此保真度会产生损失。
作用原理
正如前文所说,DPI和PPI是链接图片信息和视觉的窗口,那么它们是如何产生作用的呢?
1.图片内置的DPI和PPI
图片在计算机(或其他设备)里是一系列代表视觉信息的数据,它的单位是像素。因此,真正能定义图片尺寸的是分辨率,比如前面提到的1920×1080像素。
而很多格式的图片会内置DPI或PPI这个属性,它的唯一作用是作为图形处理软件的参考值。比如,一张图片的PPI是300,那么置入Illustrator的时候就会直接是300PPI下的尺寸。DPI是完全相同的道理。换言之,不论图片的DPI和PPI如何变化,如果分辨率不变,那么图片承载的信息量就不会变化,在实际意义上图片的“大小”都是相同的。
2.设备的DPI和PPI
我们之前提到了印刷设备的解析能力这个问题。其实每个荧幕和每个印刷设备都有自己PPI或DPI参数。我们拿荧幕来说,荧幕的PPI就决定了荧幕的解析能力(注意,并非最大解析能力,而是绝对解析能力)。
如你把某个图片的尺寸在屏幕上放大缩小,它的物理尺寸在改变,因此对信息量来说PPI也在改变。然而,荧幕会按照它自己的PPI显示能力来重新解析这张图片,最终形成你肉眼看到的结果。这个过程,我们可以称为“栅格处理。”
3.栅格处理时使用的DPI和PPI
栅格处理,实际就是将图片在物理尺寸不变的情况下,对DPI或PPI进行调整,图片的信息量会受到影响。图像为何需要进行栅格处理?因为任何设备都有固定的解析能力,比如很多荧幕的解析能力是72PPI,这时一张全屏后(即在屏幕的物理尺寸下)从信息量上来说有300PPI的图片显然超过了荧幕的解析能力,因此对荧幕来说这么大的图片是没必要的,把图片在荧幕的物理尺寸下处理为72PPI就刚好了。
从上面的例子中,你也可以看出,栅格处理无处不在。你在解析能力为72PPI的电脑荧幕上查看一张图片时,不论你如何放大缩小图片,肉眼看到的都是72PPI的图像。即便图片可能被放大到模糊,你看到的仍是72PPI,因为电脑荧幕会将任何图像栅格处理到72PPI。
然而在栅格处理的过程中,处理结果的质量和原图质量有很大的关系。比如,一张在改物理尺寸下,信息量可以达到300PPI的图片,被设备栅格到150PPI,它仍然会是清晰的。而如果原信息量只有72PPI,栅格到150PPI就会看起来模糊。
对于印刷设备来说也是一样的,现代印刷机的解析能力一般是300,因此在图片的物理尺寸和预想印刷完成后的物理尺寸相同时,如果信息量达不到300DPI,那么在印刷时就会被印刷设备栅格处理到300DPI,结果就会是模糊的。但上述两者都不能算绝对,毕竟人眼的识别能力也是有限的,比如220DPI的图像被从300DPI的设备中印刷出来,肉眼也基本看不出模糊。
4.简单理解栅格
栅格处理有非常多种算法,在Photoshop中,在缩放图片的时候你可以看到类似“两次立方”、“两次线性”、“临近”这样的选项,指的就是栅格处理的计算方式。
几乎所有的栅格都是有损处理,除了某些算法中的整数倍放大。这很容易理解,毕竟栅格相当于一种缩放。试想,你将5×5像素的图片栅格成4×4像素会发生什么?由于像素完全无法一一对应,4×4像素的图片中,每个像素都需要根据原图中的9个像素来计算新的色值,因此原图的信息受到了不可逆的破坏。
实际应用
原理说了不少,那么应用的时候我们应该注意什么?
1.在条件允许的情况下,图片分辨率越高越好
我们可能不会有精力去关心图片信息量的DPI是多少,印刷设备的DPI又是多少这种细节的问题。但有一点是可以确定的,那就是图片只要足够大,印刷就会清晰。
2.如果有可能,使用准确的数值
许多软件可以帮助你了解图片实际尺寸下的PPI,比如使用Photoshop,在300PPI下创建A4的文件(尺寸21×29.7厘米,对应分辨率2480×3508像素)并做出图片,那么大多数情况下都可以完美印刷。正如前文所述,大多印刷设备的解析能力是300DPI,因此在该图片的信息量下,1个像素刚好对应1个点,甚至不需要栅格处理。而如果你强行使用400PPI来创建A4尺寸的文件,拿到300DPI的设备上会被栅格,说不定还不如300DPI的质量好(毕竟是有损处理,但这种差别未必能看得出来)。
[转帖]十分钟快速理解DPI和PPI,不再傻傻分不清!的更多相关文章
- 十分钟快速入门 Python,看完即会,不用收藏!
本文以 Eric Matthes 的<Python编程:从入门到实践>为基础,以有一定其他语言经验的程序员视角,对书中内容提炼总结,化繁为简,将这本书的精髓融合成一篇10分钟能读完的文章. ...
- Redis 十分钟快速入门
本教程是一个快速入门教程,所以Redis的命令只是简单介绍了几个常用的,如果有其他需求请求官网查看API 使用. 1. Redis简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的ke ...
- 十分钟快速学会Matplotlib基本图形操作
在学习Python的各种工具包的时候,看网上的各种教程总是感觉各种方法很多很杂,参数的种类和个数也十分的多,理解起来需要花费不少的时间. 所以我在这里通过几个例子,对方法和每个参数都进行详细的解释,这 ...
- Redis数据类型简介(十分钟快速学习Redis)
如何在ubuntu18.04上安装和保护redis 如何连接到Redis数据库 如何管理Redis数据库和Keys 如何在Redis中管理副本和客户端 如何在Redis中管理字符串 如何在Redis中 ...
- 十分钟快速实战Three.js
前言 本文不会对Three.js几何体.材质.相机.模型.光源等概念详细讲解,会首先分成几个模块给大家快速演示一盒小案例.大家可以根据这几个模块快速了解Three.js的无限魅力.学习 我们会使用Th ...
- HDFS+MapReduce+Hive+HBase十分钟快速入门
1. 前言 本文的目的是让一个从未接触Hadoop的人,在很短的时间内快速上手,掌握编译.安装和简单的使用. 2. Hadoop家族 截止2009-8-19日,整个Hadoop家族由以 ...
- 带你十分钟快速构建好 SpringBoot + SSM 框架
目前最主流的 java web 框架应该是 SSM,而 SSM 框架由于更轻便与灵活目前受到了许多人的青睐.而 SpringBoot 的轻量化,简化项目配置, 没有 XML 配置要求等优点现在也得到了 ...
- 十分钟快速创建 Spring Cloud 项目
一般来说,Intelij IDEA 可以通过 Maven Archetype 来快速生成Maven项目,其实 IDEA 集成了 Spring 官方提供的 Spring Initializr,可以非常方 ...
- 巨杉Tech | 十分钟快速搭建 Wordpress 博客系统
介绍 很多互联网应用程序开发人员第一个接触到的网站项目就是博客系统.而全球使用最广的Wordpress常常被用户用来快速搭建个人博客网站.默认情况下,Wordpress一般在后台使用MySQL关系型数 ...
随机推荐
- 15.scrapy中selenium的应用
引入 在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值.但是通过观察我们会发现 ...
- 【vue】使用localStorage解决vuex在页面刷新后数据被清除的问题
通常,我们在使用vue编写页面时,会需要使用vuex在组件间传递(或者说共同响应)同一个数据的变化.例如:用户的登录信息. 下面,我们使用传递用户登录信息的例子来一步步解决这个问题. 首先,我们的第一 ...
- (转)Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源
http://www.ityouknow.com/springboot/2018/05/03/spring-boot-commandLineRunner.html 在我们实际工作中,总会遇到这样需求, ...
- [MySQL性能优化系列] 聚合索引
1. 普通青年的索引使用方式 假设我们有一个用户表 tb_user,内容如下: name age sex jack 22 男 rose 21 女 tom 20 男 ... ... ... 执行SQL语 ...
- [matlab] 3.矩阵
matlab矩阵运算很强大 ,几乎所有涉及矩阵运算的命令都有. 事实上,matlab里面所有变量都是以矩阵的形式保存下来的. %% >> x=[1:2.1:10] x = 1.0000 ...
- oracle等待事件-direct path read/write
转://http://blog.chinaunix.net/uid-23177306-id-2531235.html 一.direct path read1.与直接读取相关联的等待事件.当ORACLE ...
- mount --bind使用方法
我们可以通过mount --bind命令来将两个目录连接起来,mount --bind命令是将前一个目录挂载到后一个目录上,所有对后一个目录的访问其实都是对前一个目录的访问,如下所示: ## test ...
- Spring Security(二十二):6.4 Method Security
From version 2.0 onwards Spring Security has improved support substantially for adding security to y ...
- odoo 基于SQL View视图的model类
在做odoo的过程中,会涉及到多表的查询, 尤其是做报表的时候这种情况更甚,这样下来会做很多的关联,不是很方便.odoo提供了一种机制,即基于视图的model类.代码地址在这里. 具体过程如下: 1. ...
- Spring_AOP 记录系统关键操作日志用法
问题: 系统需要记录用户的关键操作日志,以便后期的系统维护,方便的查看问题,及时排除 分析: (1)保存字段:作为一个日志记录功能,首先数据库新建一张表保存用户的操作关键字段, 用户名,ip,操作描述 ...