【譯】重要的圖像優(yōu)化之六:SVG的優(yōu)化

注明:本人原創(chuàng)翻譯鸠按,原版為Essential Image Optimization電子書礼搁,這里將其拆分為幾篇文章發(fā)布。另外目尖,文中部分鏈接可能會因為“網(wǎng)絡(luò)”原因無法打開馒吴。不必著急,我會慢慢將其中一些比較好的內(nèi)容翻譯過來發(fā)表瑟曲,都會在這個“Web圖像技術(shù)深究”專題中饮戳。

目錄

正文:

SVG的優(yōu)化

保持SVG的優(yōu)良芭梯,意味著要清除任何不必要的東西。使用編輯器創(chuàng)建的SVG文件通常包含大量冗余信息(元數(shù)據(jù)弄喘、注釋玖喘、隱藏層等)。通衬⒅荆可以安全地刪除此內(nèi)容累奈,或?qū)⑵滢D(zhuǎn)換為更小的形式,而不影響當前要顯示的最終SVG急但。

Modern-Image26.jpg
由Jake Archibald提供的SVGOMG澎媒,提供了一個GUI界面方便你通過選擇選項優(yōu)化你的SVG,并支持實時預覽波桩。

SVG優(yōu)化的一些通用規(guī)則(SVGO):

  • 使用Minify和gzip壓縮您的SVG文件戒努。SVG實際上只是以XML格式表示的文本資源,和CSS突委、HTML以及JavaScript是一樣的柏卤,我們應(yīng)該使用Minify和gzip壓縮它以提高性能。
  • 使用預定義的SVG圖形如<rect>匀油,<circle>缘缚,<ellipse><line><polygon>取代路徑敌蚜。優(yōu)選預定義的形狀有助于減少生成最終圖像所需的標簽量桥滨,也意味著較少的瀏覽器解析和點陣描述代碼。減少SVG復雜度也意味著瀏覽器可以更快地顯示它弛车。
  • 如果您必須使用路徑(Path)齐媒,請嘗試減少曲線路徑,盡量簡化和合并它們纷跛。Illustrator的簡化工具可以幫助您在復雜的藝術(shù)品中消除多余的點喻括,同時平滑不規(guī)則的曲線。
  • 避免使用組(Group)贫奠。如果不能唬血,請嘗試簡化它們望蜡。
  • 刪除不可見的圖層。
  • 避免使用任何Photoshop或Illustrator效果拷恨。它們會使生成較大的位圖圖像脖律。
  • 仔細檢查SVG中任何非友好的嵌入的位圖圖像。
  • 使用工具優(yōu)化SVG腕侄。 SVGOMG是一個Jake Archibald為SVGO編寫的一個方便的Web端操作界面小泉。如果你使用Sketch,可以在導出時使用[SVGO壓縮插件](Sketch plugin for running SVGO)以減小導出文件的體積冕杠。
image.png

使用SVGO高精度模式(體積減少29%)和低精度模式(體積減少38%)處理SVG原圖后的對比示例微姊。

SVGO是一種Node.js環(huán)境下優(yōu)化SVG的工具。SVGO可以通過減少你的路徑(Path)中的精度點數(shù)分预,來減少最終文件的體積柒桑。每增加一個點位數(shù)后就會增加一個字節(jié),這就是為什么更改精度(位數(shù))會嚴重影響文件的體積噪舀。但是,改變精度需要非常小心飘诗,因為它會影響你的圖形的視覺效果与倡。

image.png

需要注意的是,雖然SVGO在前面的例子中都表現(xiàn)良好昆稿,并不會過分簡化曲線和形狀纺座,但是有很多情況下可能不是這樣。如上圖溉潭,觀察火箭上的線條可以看到在較低的經(jīng)度下净响,線條是如何產(chǎn)生了變形。

在命令行中使用SVGO:

如果您更喜歡GUI喳瓣,SVGO可以作為全局的npm CLI安裝:

npm i -g svgo

然后可以對本地的SVG文件執(zhí)行馋贤,如下所示:

svgo input.svg -o output.svg

它支持您可能期望的所有選項,包括調(diào)整浮點精度:

svgo input.svg --precision=1 -o output.svg

有關(guān)支持選項的完整列表畏陕,請參閱SVGO 說明文件配乓。

不要忘了壓縮SVG!

image.png

此外惠毁,不要忘記使用Gzip壓縮你的SVG資源或者使用Brotli來提供服務(wù)犹芹。因為SVG是文本的,所以壓縮率會非常高(可以減少50%)鞠绰。

當Google發(fā)布了一個新徽標時腰埂,我們宣布其最小版本的大小只有305個字節(jié)。

Modern-Image30.jpg

很多高級的SVG技巧可以用來將其進一步刪減體積(一直到146個字節(jié))蜈膨!可以說屿笼,無論是通過工具還是手動清理牺荠,可能你都有可能將SVG的體積再刮掉一些。

SVG Sprite

SVG在制作圖標時非常強大刁卜,它就像一個精靈一樣志电,提供了一種表示可視化圖形的方式,在這種方式里沒有奇怪的必須使用的字體蛔趴。它有著比圖標字體(SVG筆觸屬性)更精準的CSS樣式控制挑辆,更好的定位控制(不需要各種偽元素和CSS display),并且SVG 更容易理解孝情。

svg-spriteIcoMoon這樣的工具鱼蝉,可以自動將SVG組合成sprite,并可以通過CSS Sprite箫荡,Symbol SpriteStacked Sprite來使用魁亦。Una Kravetz有一篇實用的文章值得看一下,其中說明了如何使用gulp-svg-sprite進行SVG Sprite工作流程羔挡。Sara Soudein也曾在她的博客中表述轉(zhuǎn)變圖標字體到SVG洁奈。

進一步閱讀

Sara Soueidan的網(wǎng)頁交付中的優(yōu)化SVG技巧和Chris Coyier的實用SVG電子書都非常好。我還發(fā)現(xiàn)Andreas Larsen的優(yōu)化SVG帖子很有啟發(fā)(第1 部分绞灼,第2部分)利术。另外,在Sketch中準備和導出SVG圖標也是一個很好的借鑒低矮。

下一篇:【譯】重要的圖像優(yōu)化之七:圖像優(yōu)化要注意幾點

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末印叁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子军掂,更是在濱河造成了極大的恐慌轮蜕,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝗锥,死亡現(xiàn)場離奇詭異跃洛,居然都是意外死亡,警方通過查閱死者的電腦和手機玛追,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門税课,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人痊剖,你說我怎么就攤上這事韩玩。” “怎么了陆馁?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵找颓,是天一觀的道長。 經(jīng)常有香客問我叮贩,道長击狮,這世上最難降的妖魔是什么佛析? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮彪蓬,結(jié)果婚禮上寸莫,老公的妹妹穿的比我還像新娘。我一直安慰自己档冬,他們只是感情好膘茎,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著酷誓,像睡著了一般披坏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盐数,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天棒拂,我揣著相機與錄音,去河邊找鬼玫氢。 笑死帚屉,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的漾峡。 我是一名探鬼主播涮阔,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼灰殴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起掰邢,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤牺陶,失蹤者是張志新(化名)和其女友劉穎钳恕,沒想到半個月后涯鲁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體动猬,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡运杭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年双饥,在試婚紗的時候發(fā)現(xiàn)自己被綠了常侦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饰剥。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡牌柄,死狀恐怖多搀,靈堂內(nèi)的尸體忽然破棺而出歧蕉,到底是詐尸還是另有隱情,我是刑警寧澤康铭,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布惯退,位于F島的核電站,受9級特大地震影響从藤,放射性物質(zhì)發(fā)生泄漏催跪。R本人自食惡果不足惜锁蠕,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望懊蒸。 院中可真熱鬧荣倾,春花似錦、人聲如沸骑丸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽者娱。三九已至抡笼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間黄鳍,已是汗流浹背推姻。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留框沟,地道東北人藏古。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像忍燥,于是被迫代替她去往敵國和親拧晕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容