当你放大一张 JPG 或 PNG 图片到 400%,你会看到像素——那些马赛克方块是所有点阵图格式的本质限制。但如果你放大一个 SVG 图形,它永远保持清晰,边缘锐利,没有任何劣化。这就是向量图形的核心魔法,而 SVG 是网页世界实现这个魔法的标准格式。
理解 SVG 首先要理解向量和点阵的根本差异。
点阵图(Bitmap/Raster):图像由固定数量的像素格子组成,每个格子有一个颜色值。JPG、PNG、GIF、BMP 都是点阵图。点阵图的解析度是固定的——一张 100×100 像素的图放大到 1000×1000 的显示尺寸,电脑只能猜测和插值中间的像素,结果必然模糊。
向量图(Vector):图像由数学描述的几何形状组成——点、线、曲线、多边形,以及填充颜色和笔画属性。向量图没有“解析度”的概念,因为每次渲染都是根据数学公式重新计算的。放大 10 倍、100 倍、1000 倍,结果都同样清晰。
这就是为什么 Logo、图示、插图通常用向量格式设计,而照片只能是点阵图——你没办法用几个数学公式来描述一张复杂的人脸照片。
SVG 全名是 Scalable Vector Graphics(可缩放向量图形),由 W3C(万维网联盟)制定,1999 年首次发布。SVG 在向量图形格式中有一个非常独特的特性:它是纯文字的 XML 格式。
你可以用任何文字编辑器开启和编辑 SVG 文件。一个简单的 SVG 圆形看起来像这样:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<circle cx="50" cy="50" r="40" fill="blue" stroke="navy" stroke-width="3"/>
</svg>
这段 XML 描述了一个圆心在 (50,50)、半径 40、蓝色填充、深蓝色外框的圆形。不管你把这个圆形显示在多大的萤幕上,它都是完美的圆形。
文字格式带来的好处:
“可缩放”对现代多装置网页来说意义重大:
SVG 在网页上有多种使用方式:
<img src="logo.svg">,最简单的使用方式,SVG 作为图片显示。background-image: url('icon.svg'),作为 CSS 背景使用。SVG 支援多种动画机制:
animation 和 transition 属性控制 SVG 元素的动画。<animate>、<animateTransform>),虽然 Chrome 曾宣布要弃用,但最终保留了支援。主流的向量设计工具都原生支援 SVG:
如果这个档案是机密的,最安全的做法是让它根本不离开你的电脑。图片格式转换完全在浏览器里执行:档案从你的硬碟读进记忆体、在本机处理、再写回硬碟,不会送到任何服务器。
在浏览器里直接完成,档案不会离开你的电脑:图片格式转换