雜記 › 資源分享 › SVG 怎麼轉成 PNG/JPG?向量圖匯出高解析點陣圖

SVG 怎麼轉成 PNG/JPG?向量圖匯出高解析點陣圖

幫一個開源小工具做圖示那次,我在這枚圖形上花了整整兩天:24×24 網格上一個圓角方框加一道弧線。原始檔是 SVG,我相當滿意,然後開始交付——小程式後台說不收 SVG,應用程式圖示要 1024×1024 的點陣圖,網頁的 manifest 要 192 和 512 兩份,文件裡的標誌又是另一套尺寸。最糟的是第一次轉出來的 32px 圖示,那道 1px 的弧線直接消失了,看上去像個方框缺了一角。點陣化這件事,真不是「改個副檔名」。

一、從向量到點陣圖,中間發生了什麼

SVG 存的是路徑、描邊寬度和顏色,瀏覽器拿到之後按目前顯示尺寸重新計算一遍;點陣圖存的是每個像素的顏色值。轉換的正式名稱叫點陣化:把你指定的寬高切成格子,逐格算出該填什麼色。所以輸出清不清楚,取決於你填進去的那兩個數字,跟 SVG 內部的 viewBox 是 24 還是 2400 沒有直接關係。

SVG(向量)PNG / JPG / WebP(點陣圖)
放大表現路徑重算,邊緣始終乾淨像素被插值,會發糊或出現鋸齒
體積圖示這類簡單圖形通常幾 KB隨像素數量成長
誰能接收瀏覽器、設計軟體平台後台上傳位、系統圖示、幾乎所有場景
透明支援PNG 支援;JPG 沒有透明通道,會被填成白底
可否改圖形改程式碼就能改只能重畫

二、我這份圖示最後交了哪些尺寸

  1. 1024×1024 PNG:母版,不帶圓角,四周留白按圖形寬度的 10% 留。
  2. 512×512 和 192×192 PNG:網頁 manifest 裡那兩檔。
  3. 64×64 和 32×32 PNG:網站分頁圖示、文件內嵌小圖。
  4. 1200×630 WebP:社群分享卡片底圖,品質我拉到 90%。

這張清單是我和後台提示一項一項對出來的。規則會變,每次交付前我都再核一遍,不指望記住。

至於那道 32px 上消失的弧線,我後來的解法是先往大匯出、再縮小:出 128×128,然後在自己的影像軟體裡縮到 32。原因是 SVG 裡 1px 的描邊落到 32px 的輸出網格上,連一個像素都佔不滿,點陣化只能把它抹平。

三、我實際轉一份的流程

  1. 先在SVG 圖片預覽裡確認算圖結果。有些 SVG 用了外部字型、CSS 變數或者 foreignObject,原始碼看著沒問題,瀏覽器裡根本不出現,這一步能提前發現。
  2. 把檔案放進SVG 轉換格式,選輸出格式,填目標寬高。勾上等比時只填一個數,另一邊讓它按比例算,避免把圓壓成橢圓。
  3. 圖示一律用 PNG,因為要透明底;照片類素材用 JPG;網頁裡想省體積選 WebP,品質滑桿 10%–100% 那一檔只對 JPG 和 WebP 有意義。
  4. 下載到本機,用系統看圖放大到 400% 看邊緣,再實際放進使用位置截一張(例如瀏覽器分頁、聊天視窗的分享卡),確認在真實尺寸下還認得出這是那枚圖示。

四、反覆出現的幾個坑

  • 尺寸填小了:viewBox 是 24,輸出框裡也順手填 24,拿到的就是一張 24px 的圖,再放大到 1024 就是一團馬賽克。輸出尺寸要按使用位置真正需要的像素填,不是按原始檔的邏輯尺寸填。
  • 想要 JPG 的透明底:JPG 本身沒有 alpha 通道,透明區域會被填成白色,這不是轉換時勾一下選項能解決的。
  • 顏色對不上設計稿:SVG 裡的漸層和濾鏡依賴瀏覽器算圖,某些色值轉出來和設計軟體裡不完全一致。我的原則是以轉出的點陣圖為準回頭改 SVG,而不是反覆重轉。
  • 只給了點陣圖卻想要向量:那是反方向的活,得走描摹,出來的路徑是近似結果,別期待跟原稿一模一樣。
  • 一次交很多個規格:我的習慣是一份一份轉,每轉完一個就核對一次尺寸和透明,因為不同規格的參數本來就不一樣。

五、匯出尺寸我是怎麼定的

我的取數原則只有一句:按那個位置真實顯示多大來算,再乘以 2,最後往上取到常見檔位。乘以 2 是為了高解析螢幕,往上取檔是因為平台後台往往只接受固定幾檔。這次交付我實際填的數字如下:

使用位置頁面上顯示約多大我匯出的尺寸格式與透明
瀏覽器分頁16×1632×32,另存一份 64×64 備用PNG,保留透明
桌面捷徑48–72dp192×192PNG,保留透明
應用程式後台圖示欄位約 150–1701024×1024PNG,四周留白 10%
聊天視窗分享卡片約 600×3151200×630WebP,品質 90%
文件裡的品牌字標24–32 高64×64PNG,保留透明

對照表裡最容易被忽略的是「留白」這一欄。圖形本身塞滿畫布時,進了系統自動加的圓角遮罩裡就會被切掉邊緣,我那枚圖示的弧線第一次就是貼邊貼太緊,在 192 那一檔被削掉了兩個端點。

六、常見疑問

Q:SVG 轉 PNG 會失真嗎?

輸出尺寸夠大就不會。失真幾乎都來自尺寸定得比使用位置還小,或者來源圖形裡存在 1px 級細節,落到小網格上被抹平。

Q:想要透明背景該選哪個格式?

PNG。JPG 不支援透明,會填成白底;WebP 支援透明,同畫質下體積更小,但要確認接收方那個後台認不認 WebP。

Q:品質滑桿對 PNG 有用嗎?

我實測影響的是 JPG 和 WebP。PNG 是有損還是無損由格式本身決定,所以我出 PNG 的時候只調尺寸,不動品質。

Q:為什麼轉出來的圖有白邊?

多半是抗鋸齒:路徑邊緣的半透明像素在深色背景上會顯出一圈淺邊。我的做法是匯出透明 PNG 之後在使用位置看效果,明顯的話把圖形外輪廓稍微往內收一點。

Q:SVG 會被上傳嗎?

不會,轉換在瀏覽器本機完成。幫未公開專案做圖示時,這一條是我能不能用它的判斷標準。

那天之後我改了交付習慣:圖示原始檔除了 SVG,一定同時附一份「尺寸—格式—是否透明」的對照表,把每個使用位置寫清楚。轉換本身只是一次填數字的動作,前面那份表才是真正省時間的東西。

📎 相關文章

SOS 只有 9 個音,整句字母表要 104 個音:摩斯碼的節奏怎麼算出來 2026-10-21 轉盤上寫「權重 30」是幾成機會?扇區角度、放回與不放回的兩種抽法 2026-10-21 漸層底上的白字為什麼總看不清?把 WCAG 對比度逐個色標算一遍 2026-10-21 老照片放大就發糊?畫質提升能救回多少細節 2026-10-15 庫存標籤要條碼?CODE128 與 EAN-13 怎麼選 2026-10-15