相机拍的图,电脑上画的图,word里的文字,电脑屏幕,手机屏幕,相机屏幕显示大小一切的一切都搞明白了!

先说图片
X×dpi=点数dot
X是图片实际尺寸,简单点,我们只算图片的高吧,比如说拍了张图片144×144 72dpi,那么它的实际高就是144÷72=2吋
dpi是每吋点数,在相机拍出一张图片之后它的dpi就确定了(右键属性摘要里就能看),比如最常见的72dpi,还说上面提到的144×144 72dpi的图片,72dpi的意思是说如果也按照72dpi打印图片的话打印出来还是高2吋(X)的
可是我们经常最到的情况是输入设备dpi和输出设备dpi不一致的情况,比如对这张144×144 72dpi的图片我们以144dpi打印出的图片实际高就是144÷144=1吋(X)

明白了吧?相机拍出来的图片宽高的点数144×144(点数dot和像素数pixel的关系一会儿再说)和dpi(别说分辨率,以免混淆概念),在这里是72dpi是确定的(前提是你别用ps等来改),但这现两个参数的不同在于点数144×144是固定不变的,比如这个相机是144×144=20736(按常用的说法这个相机就是2万像素),按最大能力拍出的照片就是由144×144=20736个点组成的,你没法变了,除非PS,而对于高度或宽度上的144个点,你可以把它们放在2吋(X)里(当以默认72dpi打印时),这时2吋里有144个点;也可以在1吋(X)的长度里平均分配这144个点(当以144dpi打印时),这时1吋里有144个点,当然了,第2种情况打印出来的图片要小一半,但感觉更清晰了。或者可以这样理解,确定的是点数dots,而每个点多大是不确定的可以选的,结果X是不确定的。

上面说的是打印出来的情况,我们平时看到的最多的还是屏幕上看到图片,图片拍完了在相机屏幕上看到,传到电脑里在电脑屏幕上看到,在手机屏幕上看到,在其他屏幕上看到等等,现在来说一说图片实际尺寸和我们在屏幕上看到的尺寸大小的关系。

X×dpi=Y×ppi(Y×ppi=像素数pixel)
即点数dot=像素数pixel
我们以电脑为例
X上面提到过了,是图片实际尺寸(可以变),而Y呢?Y是你在屏幕上看到的图片尺寸,说明白点拿尺子量一量你电脑屏幕上以100%显示的图片高是多少的。就以常见的14吋16:10宽屏液晶显示器为例,长宽是12吋×7.5吋,方便起见我们说它的高是7.5吋的。ppi是每吋像素pixel数,公式中确定的是X×dpi也即Y×ppi=144,我们看到的Y怎么算呢?当然是144÷ppi,那么ppi怎么算呢?如果你用1280×800的分辨率,那么ppi=800÷7.5=107,或1280÷12=107,Y=144÷107=1.35吋=3.4cm,拿你的尺子量一量是不是这样的吧。需要说明的是,在计算过程中要多次用到英制和公制的转换,1吋≈2.5399999896876厘米,经过多次转换再加上显示器实际显示尺寸的不同,可能最终计算结果和实际测量结果会有所出入。
实际上我们平时在屏幕上看图片,比如网页设计,不会去在意它的实际显示尺寸,只要知道它的相对大小就可以了,也就是图片的高相对于屏幕高的比例,因为每个人的屏幕情况都是不一样的,有小的上网本也有超大的屏幕,我们只要计算图片的高度占屏高的比例就行了,Y×ppi=Y×分辨率高÷屏高,(Y×分辨率高÷屏高)/分辨率高=Y/屏高,即图片像素数占分辨率高度上的点数的比例=图片的高度占屏高的比例,例子中就是(144=1.35×800÷7.5)/800=1.35/7.5=0.18,这张144px高的图片占分辨率高800px的0.18,也就是说我们不用算出Y=1.35,只用144÷800就行了。

知道了计算过程我们就可以知道同一张图片在不同电脑不同分辨率不同dpi的情况下所看到的大小不同的原因。首先说这张144×144的图片在14吋显示器1280×800屏幕分辨率条件下它的高占屏高的144/800,在15吋1280×800条件下这一比例仍为144/800,但屏幕大了你看到的图片就大了,在14吋960×600条件下这一比例变为144/600,与14吋1280×800相比看到的图片变大了;而在320×240的QVGA屏幕的手机上,这张图片的高就占了整个屏幕高的144/240,具体与14吋1280×800下的Y=1.35相比是大是小,这还与你手机屏幕的宽度有关,算法与电脑的情况一样。
一张图片的dots=pixels是确定的,这意味着无论你的电脑显示dpi是多少,144×144的图片在14吋1280×800条件下它的高都占屏高的144/800,而电脑dpi与显示分辨率都与打印dpi无关,也就是说无论你的电脑设置pdi多少,分辨率多少,通过这台电脑连接打印机以72dpi打印出来的这张图片高都是2吋;用别的15或12吋的电脑结果还是一样。

上面提到的都是图片,文字不同,图片确定的是dots=pixels,高度上有144个dots,而文字一般确定的是实际大小,即磅值(1磅=1/72吋),比如word里输入常用的五号宋体字磅值是10.5磅,不论你的电脑显示dpi是多少,分辨率是多少,连接的打印机打印dpi是多少,打印出来的字高都是10.5磅,也就是说,对于确定pt(point磅值)的文字,它的实际大小也就确定了。前面提到的实际大小X= pt×1/72,所以确定了pt也就确定了X,不同打印dpi的影响只是组成文字的点的不同,以72dpi打印出来的宋体五号字在10.5磅的高度上是由10.5磅×1/72×72dpi=10.5个点组成的;而以96dpi打印出来的宋体五号字在10.5磅的高度上是由10.5磅×1/72×96dpi=14个点组成的(这样的汉字看不清楚,汉字至少需要16×16点阵组成才能分辨清楚)。
下面说说屏幕上显示文字的大小问题,我们再来看公式
X×dpi=Y×ppi
Y×ppi=Y×分辨率高÷屏高=px(pixel)
于是有pt×1/72×dpi= Y×分辨率高÷屏高=px,回顾前面图片的情况,图片px是确定的,因此同一张图片在不同分辨率和不同尺寸的屏幕上的显示问题实际上是在px为定值,”分辨率高”和”屏高”为变动值的条件下图高px/分辨率高px的比例问题;而对于文字来说,磅值pt是确定的,因此同样的宋体五号10.5pt的字在不同分辨率和不同尺寸的屏幕上的显示问题实际上是在pt为定值,”显示dpi”、”分辨率高”和”屏高”为变动值的条件下字高px/分辨率高px的比例问题,变动情况与图片类似。因此我们可以知道,调高显示dpi会使文字变大,调低分辨率也会使文字变大,当然你换了更大的显示器字也就更大了。

不过,在网页设计中我们一般都规定了文字的px,也就是说pt×1/72×dpi=px为定值,pt根据个人电脑的dpi自动调整,这样做的目的是为保证在不同dpi的电脑中文字的显示比例一样。这就与前面图片的情况一样了。

相机拍的图,电脑上画的图,word里的文字,电脑屏幕,手机屏幕,相机屏幕显示大小一切的一切都搞明白了!的更多相关文章

  1. 使用 VirtualBox 虚拟机在电脑上运行 Android 4.0 系统,让电脑瞬间变安卓平板

    Ref: http://www.iplaysoft.com/android-v4-ics-for-virtualbox.html 随着 Android 手机的各种软件应用越来越多,很多没有购买的朋友都 ...

  2. 使用TCP在同一台电脑上可以建立连接,在两台电脑上却连接失败的原因分析

    最近在用unity做联机游戏,在网络方面费了不少劲,总是在代码没问题的时候出一些莫名奇妙的BUG,不过后来都决定了.如果感觉代码没问题,八成就是防火墙的问题. 用unity发布后的游戏,如果涉及网络, ...

  3. 玩转html5(二)----用canvas结合脚本在画布上画简单的图(html5又一强大功能)

    在html5中可以使用canvas标签在画布上画图,先直接上代码,这篇文章先简单介绍一下canvas的使用方法,简单画几个圆,矩形,三角形,写字. 在代码中均给出了注释,在这里特别强调的一点是:使用c ...

  4. 在MPAndroidChart库K线图的基础上画均线

    CombinedChart 可以直接使用MPAndroidChart库里面提供的CombinedChart实现组合图形 Demo:CombinedChartDemo ------分割线(如果想在一个图 ...

  5. ggplot2在一幅图上画两条曲线

    ggplot2在一幅图上画两条曲线 print(data)后的结果是 C BROWN.P MI.P 0 0.9216 0.9282 30 0.9240 0.9282 100 0.9255 0.9282 ...

  6. 如何使用excel画甘特图

    甘特图小伙伴们都非常的熟悉,首先小编简单的向各位小伙伴介绍一下什么是甘特图,甘特图内在思想简单,即以图示的方式通过活动列表和时间刻度形象地表示出任何特定项目的活动顺序与持续时间.基本是一条线条图,横轴 ...

  7. canvas上画出坐标集合,并标记新坐标,背景支持放大缩小拖动功能

    写在前面:项目需求,用户上传一个区位的平面图片,用户可以在图片上添加新的相机位置,并且展示之前已绑定的相机坐标位置,图片支持放大缩小&拖动的功能.新增坐标,页面展示相对canvas定位,保存时 ...

  8. 如何在一台新电脑上配置JAVA开发环境

    对于JAVA新手来说,刚开始要学JAVA,而自己的电脑上毫无与JAVA开发有关的环境,应该如何进行配置呢? (安卓新手也需要JAVA开发环境) 第一步,下载.安装java JRE JRE (Java ...

  9. 用rose画UML图(用例图,活动图)

    用rose画UML图(用例图,活动图) 首先,安装rose2003,电脑从win8升到win10以后,发现win10并不支持rose2003的安装,换了rose2007以后,发现也不可以. 解决途径: ...

随机推荐

  1. java 实现冒泡排序

    public void bubbleSort(int[] arr) { boolean swapped = true; int j = 0; int tmp; while (swapped) { sw ...

  2. 使用staruml学习画类图

    //这是startuml 把uml 转换成的java代码: public class Circle implements Ishape { private double _radius; public ...

  3. php操作数据库的简单示例

    放假期间自己又写了几个简单的网页,但在服务器中打开时和在网站上打开时不一样,在服务器中打开的出现了错误,字体比一般的腰大好多,页面也相应地变大了,一些块即使用了浮动和clear浮动还是被遮住了,我只好 ...

  4. 通过iTop Webservice接口丰富OQL的功能

    通过Python调用iTop的Webservice接口: #!/usr/bin/env python #coding: utf-8 import requests import json itopur ...

  5. ansible 小试

    安装: pip install ansible 添加配置文件: 配置文件查找顺序 * ANSIBLE_CONFIG (环境变量) * ansible.cfg (当前目录下) * .ansible.cf ...

  6. 去掉无用的多余的空格(string1.前后空格,2.中间空格)

    1.使用NSString中的stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]方法只是去掉左右两边的空格: ...

  7. Ubuntu的安装与配置

    一.Ubuntu的安装与配置 Ubuntu 快速下载地址 1.安装VMwareTools 系统安装后,工具栏"虚拟机"-->"安装VMwareTools" ...

  8. kafka windows环境搭建 测试

    http://www.cnblogs.com/alvingofast/p/kafka_deployment_on_windows.html 照着例子搭建成功

  9. LoadRunner访问Mysql数据库

    这是很久以前编写的一个测试案例,那时是为了检查大量往Mysql数据库里插入数据,看一下数据库的性能如何?服务器是否会很快就被写满了. 前期的准备工作:Mysql 数据库搭建,LoadRunner,li ...

  10. JSP 登录与注册的小案例

    源代码连接地址如下:链接:http://pan.baidu.com/s/1nvEuHBj 密码:qsr1 #properties文件 driver=oracle.jdbc.driver.OracleD ...