當你放大一張 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:
如果這個檔案是機密的,最安全的做法是讓它根本不離開你的電腦。圖片格式轉換完全在瀏覽器裡執行:檔案從你的硬碟讀進記憶體、在本機處理、再寫回硬碟,不會送到任何伺服器。
在瀏覽器裡直接完成,檔案不會離開你的電腦:圖片格式轉換