下面继续普及图片、声音、视频的储存。
图片最简单的就是位图。假如把屏幕分成1920*1080个点(现在大部分显示器和手机都这个分辨率),每个点用3个字节来表示颜色,你可以算算三个字节能表示多少种颜色,是一千六百万还多。这对于人的眼睛基本够了(当然还有更强大的32位颜色,如果需要,64位也不是不能编,解码程序一个约定而已)。如果年纪大点可能还记得10年前某手机的广告:1600万真彩色屏。因为当时的彩屏手机大半是65000色的,也就是2个字节表示一个点。当然,点也可以分得更密,比如3840*2160,这就是某些电视机和手机吹嘘的2K屏了。这也就是数码相机的相素。所谓1200万相素,也就是能拍出4000*3000个点的照片。如果你手头有计算器的话,你可以算一下,4000*3000再乘以3个字节,这就是一张千万级别的位图的大小。你是不是很惊奇?看起来太大了一点,大概有38MB之多,事实上这就是BMP格式的图片真实大小。但实际上数据是可以压缩的。最简单的来说,比如连续100个1,你完全可以写成“100个1”,而不用把100个1全写出来。只要在显示时把它还原出来就行了。当然,一个真正压缩算法要复杂很多,显然不是本文讨论范围。你只要知道,JPG的有损压缩,可以把千万相素级照片的压缩在3MB左右。而无损压缩要大很多,比如单反相机,你把格式换成无损的,一张照片十几兆。
后来人们又发明了矢量图。简单来说,矢量图就是一组方程来定义图片。比如你要画一条抛物线,只需要一个二次方程就行了,要显示的时候计算出来。一个方程只占用几个字节就行了,而如果是点阵的话,你起码需要几百个点才能画出一条线,并且矢量图随意放大都不会失真,而点阵图你放大之后就会看见明显的色块,不信你随便找张照片,用软件放大100倍试试。当然,很多东西无法用矢量图完成,比如照片。但字库、设计图之类的都可以用矢量图。