图形系统
计算机中描述图形信息的两大系统是栅格图形(raster graphic)和矢量图形(vertor graphic)
1.1 栅格图形
在栅格图形系统中,图像被表示为图片元素或者像素的长方形数组。每个像素用其RGB颜色值或者颜色表内的索引表示。这一系列像素也被称为位图(bitmap),通常以某种压缩格式保存。由于大多数现代显示设备也是栅格系统。显示图像的时候只需要一个阅读器就能够将位图解压缩并且将他传递到屏幕上面去。
1.2 矢量图形
在矢量图形系统中,图像被描述为一系列几何形状。矢量图形阅读器接受在指定坐标系上绘制形状的指令。而不是接受一系列已经计算好的像素。
想象一下在一张绘图纸上的作图过程,栅格图形的工作就像是描述哪个方格应该填充什么,而矢量图形的工作就像是描述从某一个点到另外一个点的直线或者曲线。有些人把矢量图形描绘成一组指令,而位图就是在特定的位置填充颜色的点。矢量图形知道他们是什么-----方块“知道”他是一个方块。文本“知道”他是一个文本。由于矢量图形是对象而不是一系列像素,因此矢量对象可以改变他们的形状和颜色。而位图则不能。此外,所有的文本都是可以搜索的。因为无论看起来是什么样子或者做了什么样的旋转或者变换。他们实际上还只是一个文本。
还可以将栅格图形想象为画布上面的绘画。而矢量图形则是由可伸缩材料构成的直线和形状。他们可以在背景上移动。
1.3 栅格图形的用途
栅格图像最适合用来表示照片,因为照片很少由明显的线条和曲线构成。扫描的图像也通常被存储为位图。即使他最初可能是一张线图。但是人们也希望存储的是整个图像。而并不是关心它的各个组成部分。比如传真机就不关心你绘制的是什么。他只是使用栅格图形将像素从一个地方传输到另外一个地方。
创建栅格图形格式的工具有很多。而且通常比许多矢量图形的工具更好用。压缩和存储栅格图像的方式有很多种。并且这些格式的内部规则都是公开的。用于读写JPEG、GIF、PNG等压缩格式的程序唾手可得。这也是SVG出现之前WEB浏览器只支持栅格图像的部分原因。
1.4 矢量图形的用途
矢量图形用于以下领域:
- 计算机辅助绘图程序,因为精准的测量和放大绘图以方便查看细节非常的重要
- 设计用于高分辨率打印图像的程序。
- Adobe PostScript打印和成像语言,打印的每一个字符都用直线和曲线来描述。
- 基于矢量图形的Macromedia Flash系统。用来设计动画。演示和网站。
由于这类文件大多数都被编码成为二进制格式或者打包好的比特流。所以有一些工作非常的难做。比如让浏览器或者其他用户代理解析内嵌的文本。或者让服务器基于外部数据动态创建矢量图形文件。大多数的矢量图形的内部规则都是专用的,浏览,创建这些图形的代码很难获得。
2.1 可缩放
尽管矢量图形不像栅格图形那么流行。但是他们可以缩放而不损失图像质量。因此在许多的应用程序中具有不可估量的价值。
但是,当我们放大一张栅格图形的时候,我们必须通过某种方式扩大每个像素,想要将图像放大到4倍,最简单的方法就是让每个像素放大到原来的4倍。这样我们的栅格图形边缘就不可避免的会出现锯齿化的像素。
尽管可以通过边缘检测系统和反锯齿化这类技术来优化放大后的图像。但是这些技术都非常的耗时。此外,由于栅格图像中的所有像素都是未知的。因此并不能保证相关算法能够正确的检测到边缘的形状。
另外一个方面,当我们放大矢量图形的时候,我们只需要让显示程序将图像上面的所有坐标系都乘以4,然后用显示设备的完整分辨率重新绘制他们就好了。这样图像线条的边缘就会非常的清晰。
参考文献
- SVG精髓【第二版】