我在电脑里整理相册的时候,打开其中的一张照片如下所示:
在这张照片点击鼠标右键查看详细信息的时候,于是看到了如下的属性:
我相信很多人平时都会遇到这样的场景,我们一下子看到这些参数,却不知道它们都代表什么含义。有的人一笑而过,而有的人却想搞明白这些都代表什么含义,如果你是后面的这类人,就可以继续往下看了。
我在上一节课已经介绍了字符是如何存入计算机的,从ASCII码、GB2312到最后的UTF-8。本节将介绍图像是如何存入计算机的。在介绍图像存储之前,我们还是从颜色在计算机存储开始讲起。
RGB色彩模式是工业界的一种颜色标准, 是通过对红(red)(R), 绿(green)(G), 蓝(blue)(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,这个标准几乎包括了人类视力所能感知的所有颜色, 是目前运用最广的颜色系统之一。
下面咱们看一下RGB是如何表示颜色的,举个例子RGB(255, 128, 196)从这个例子看以看出:有3个颜色分量,分别是R的值255,G的值128,B的值196,这三个分量分别用了8位存储。咱们前面提到过8位存储,可以存储256个值,因为2⁸=256,存储的值为0-255。这里的R的值为255已经是红色的最大值,G的值为128是个中间值,B的值为196更靠近纯蓝色一些,让大家想象出这个颜色好像有点困难,所以我就直接找到了这个颜色值RGB(255,128,196)。下面列举几个特殊的颜色值,纯红色RGB(255,0,0),纯绿色RGB(0,255,0),纯蓝色(0,0,255)。RGB总共表示的颜色数:256*256*256=16777216。最后还是直接上图,大家就不用再想象了。
通过上面的讲解,相信大家已经对RGB模式有了初步的了解。在实际的开发中,我们可能还会遇到RGBA模式,其中的A代表的是alpha通道,一般表示透明度,值从0%-100%,0-表示完全透明,100-表示完全不透明。关于RGB的颜色表示还有一种16进制表示方式,比如刚才的RGB(255,128,196)换算成16进制为#FF80C4,关于这种换算计算我们将在后面的课程中介绍。颜色模式除了RGB模式还有YUV模式和CMYK模式。
YUV模式, 分为三个分量, "Y"表示明亮度,而"U"和"V" 表示的则是色度,作用是描述影像色彩及饱和度, 用于指定像素的颜色。主要用于电视系统以及模拟视频领域。
CMYK模式又称印刷色彩模式, 顾名思义就是用来印刷的。C:Cyan = 青色,M:Magenta = 品红色,Y:Yellow = 黄色,K:Key(blacK) = 定位套版色(黑色)
我们把一张图片放大后,会发现图片上有很多的小方格。这些小方格都有一个明确的位置和被分配的色彩值,这些小方格就叫像素(Pixel-px),它们都是不可再分割的单位或是元素。
分辨率(Resolution)又称解析度,可以细分为显示分辨率、图像分辨率、打印分辨率和扫描分辨率。咱们再回到本文开头的那张图片,有一项参数 分辨率 4000x3000,它表示的意思是这张图片的宽度4000像素,高为3000像素,那么分辨率 4000x3000=120000000像素,也就是我们平时说的1200万像素,所以我们平时说的多少千万像素的摄像头,只要看下拍出的图片大小,就可以知道了。
还有水平分辨率 72dpi 这个又是什么意思?这个就是咱们要说的图像分辨率,图像分辨率则是单位英寸中所包含的像素点数。常用单位:dpi(点每英寸),ppi(像素每英寸)。1英寸=2.54厘米(cm),它的实质是描述了图像的真实大小。同理,后面的打印分辨率就是打印机的分辨率,扫描分辨率就是扫描仪的分辨率了。
位深度 24就是咱们刚才介绍的一个颜色用RGB的模式,需要24位来存储,因为是3个颜色分量,每个分量都是8位,所以是24位。
分辨率的单位有三种,分别是:1、2、3
1.代表没有单位;
2.代表单位为英寸,即每英寸有多少个点数;
3.代表单位为厘米,即每厘米有多少个点数。
颜色表示 sRGB standard RGB 标准RGB模式。讲到这里,相信大家已经明白常见的一些图片属性了。刚才那张图片是jpg格式的,现在一般拍照的图片直接存储的格式都是jpg了,那么平时我们还会看到别的图片格式,常见的有以下几种:BMP、JPG、PNG、GIF,下面将介绍这几种常见格式。
BMP(Bitmap):是Windows操作系统中的标准图像文件格式,采用位映射存储格式,无压缩,BMP文件的图像深度可选1、4、8、24位。BMP最大的特点就是没有压缩,所以可以根据咱们上面介绍的知识来计算出BMP图像的大小。如下例所示:
这个图片是我从自己电脑里搜出来的,然后在图片上点击鼠标右键,在详情信息里得到图片的属性。具体计算如下:320x320x24/8/1024=300KB ,这里先计算出图片的总像素数用320x320,然后再计算存储需要的位数320x320x24,再换算成字节数320x320x24/8,最后换算成KB。在这里需要注意的是,只有BMP格式的图片能这样计算,因为BMP图片没有压缩。有兴趣的同学,可以自己找些BMP的图片,自己计算一下。
JPG:使用的一种失真压缩标准方法,24 bit真彩色,不支持动画、不支持透明色。
PNG:格式是无损(不失真)数据压缩的,PNG格式有8位、24位、32位三种形式,其中8位PNG支持两种不同的透明形式(索引透明和alpha透明)。
GIF:是一种常用的动态图像格式,简单说就是动画。
本节就先讲这么多,好像还没介绍拍照的图片如何存储到手机里,其实分为三个过程,采样、量化、编码。后面我在介绍音频编码时,再介绍这样三个过程。如果你觉得本文还不错,请推荐给需要的朋友们。