ROCKI

LEARN · ARTICLE

PNG/AI 圖轉 SVG 向量的印前實測

發布 2026-11-09更新 2026-11-09作者 Rock Lee
PNG/AI 圖轉 SVG 向量的印前實測 封面示意圖

作者:Rock Lee 實測素材日期:2026-11-07(Asia/Taipei)|本文定稿:2026-11-09

為什麼寫這篇

搜「png 轉 svg」「圖片轉向量 ai」時,結果幾乎都是線上自動轉檔或一鍵描圖。我真正要的不是「看起來像向量」,而是印前可用的乾淨平色、封閉路徑、節點可控。

2026-10-23 我查過 Vectorizer.AI、VectoSolve、Ideogram Vector 的公開定價與 API 文件,並用無金鑰的方式探測:三家正式轉檔端點都回 HTTP 401,拿不到無浮水印的生產用 SVG。同日也做過本機 k-means+VTracer 對照;節點與色塊太碎,只當內部對照,禁止當客戶稿。

因此我改走另一條路:2026-11-07 做了一次自主練習——不自動描圖、不自動減色、不呼叫付費服務,用手寫 Bézier+skia-pathops 整理同色與鏤空,再做瀏覽器與 PDF 驗收。比較圖角落有標「自主練習・非客戶成果」。

位圖放大會出現鋸齒,向量靠錨點與曲線保持銳利(示意圖,AI 生成)
位圖放大會出現鋸齒,向量靠錨點與曲線保持銳利(示意圖,AI 生成)

實測環境

項目內容
素材範例練習資料夾(原圖、腳本與驗收輸出)
幾何手寫路徑;同色合併/差集用 skia-pathops
SVG→PDF/渲染CairoSVG 1.18.4(PDF Producer 字串)
瀏覽器驗收Google Chrome + Playwright
PDF 檢查pdfimages -list、pdffonts、pdfinfo
路徑軟體抽查免費線上編輯器 Vectorpea:兩色層各一路徑、錨點可編輯

明確不做的事:自動描圖、邊緣轉路徑、自動減色、付費雲端向量化、宣稱印刷打樣保證。

步驟

圖片 → 描繪路徑 → 驗收 → 交印刷(示意圖,AI 生成)
圖片 → 描繪路徑 → 驗收 → 交印刷(示意圖,AI 生成)

1. 看原圖、手選平色(不做自動減色)

原圖先取樣兩個平色,對照像素座標寫進驗收檔:

用途原圖像素RGBHEX
深藍(625, 250)(9, 42, 86)#092a56
珊瑚(750, 413)(244, 100, 82)#f46452

眼部用透明差集挖空,不加第三個白色填色。少一色少一次對位風險;鏤空處會露出承印底色,必須跟客戶講清楚。

練習用原圖參考(自主練習素材)
練習用原圖參考(自主練習素材)
原圖/清理後/局部約 400% 放大對照;角落標自主練習・非客戶成果
原圖/清理後/局部約 400% 放大對照;角落標自主練習・非客戶成果

2. 手寫 Bézier,再只用 pathops 整理

鳥身、羽尖、叉尾、眼部鏤空、胸部與浪形都是看圖後手寫曲線與端點;接著才用 skia-pathops 做同色聯集與差集。這一步不是從影像自動抽路徑。工作座標 viewBox 為 0 0 1024 576。

清理後 SVG 以 CairoSVG 渲染的結果(兩平色、透明底)
清理後 SVG 以 CairoSVG 渲染的結果(兩平色、透明底)
局部細節:眼部鏤空與羽尖路徑
局部細節:眼部鏤空與羽尖路徑

3. 輸出交付檔

檔案用途與實測規格
sample.svg透明背景、兩層按色分組、可編輯路徑;無 <image>、無漸層
sample.pdfCairoSVG 輸出 PDF 1.7;768×432 pt;真向量,但是 RGB,不是 CMYK/PDF-X
sample.pngRGBA 2000×1125,背景透明
compare.jpg對照圖;角落標「自主練習・非客戶成果」

重建指令(需本機 Pillow、fontTools、skia-pathops、CairoSVG、Playwright/Chrome;不需付費 API):

cd <範例練習資料夾>
python3 build_sample.py
python3 verify_sample.py
交付用 PNG 預覽(透明底匯出)
交付用 PNG 預覽(透明底匯出)

4. 瀏覽器與 PDF 驗收

  • Chrome 實際開啟 SVG:page error=0。
  • pdfimages -list:0 列影像。
  • pdffonts:0 列字型。
  • 機讀結果在 verification.json。
Chrome 開啟 SVG 的瀏覽器實測截圖
Chrome 開啟 SVG 的瀏覽器實測截圖
pdfinfo/pdfimages/pdffonts 真實終端輸出
pdfinfo/pdfimages/pdffonts 真實終端輸出

5. 路徑軟體抽查(Vectorpea)

本機 Inkscape 安裝未完成,改用免費線上編輯器 Vectorpea 開啟同一份 SVG:兩個色層各一條路徑,錨點可編輯。這不能替代印刷打樣,只代表路徑打得開、選得動。

Vectorpea 開啟練習 SVG:可見兩色分層
Vectorpea 開啟練習 SVG:可見兩色分層
Vectorpea 節點編輯:錨點可調
Vectorpea 節點編輯:錨點可調

結果

最終藝術面只有 2 種平面填色(與 verification.json 一致):

項目數值
<path>2
封閉子路徑7
輪廓節點(on-curve)91
控制點129
兩色交集面積(SVG 平方單位)0.0

深藍層 1 path/5 子路徑/55 節點;珊瑚層 1 path/2 子路徑/36 節點。兩層 fill-rule="nonzero",無 gradient、filter、stroke。

這代表什麼: 結構乾淨、可編輯、PDF 沒嵌點陣。 這不代表什麼: 不能保證印廠上機顏色,也不能宣稱全桌面向量軟體完整相容。

踩坑紀錄

  1. 自動減色當客戶稿=踩雷 — k-means/VTracer 只做內部對照。
  2. 雲端工具沒金鑰就停在 401 — 預覽≠可下載生產檔。
  3. RGB 向量 ≠ 印刷完稿 — 無出血、非 PDF/X。
  4. 透明鏤空會吃底材顏色。
  5. 桌面 Inkscape 未裝成,改用 Vectorpea 抽查 — 仍不要宣稱完稿保證。

常見問題

Q1:為什麼不用一鍵 AI 轉向量? 要印前分色與節點可控時,我優先「色數手選、路徑可編、能驗收」。

Q2:這份 PDF 可以直接給印刷廠嗎? 不行當完稿保證。 它證明是向量、沒嵌圖、沒字型,但色彩是 RGB、無出血與 PDF/X。

Q3:和商業雲端工具比誰比較好? 本篇主線是本機手繪清理的可重現數字;當時沒完成付費下載並排試驗,不在這裡硬排名。

讀者可勾的驗收清單

  • [ ] 平色數量可控(本練習=2)
  • [ ] SVG/PDF 無嵌入點陣(pdfimages 0 列)
  • [ ] 無 gradient/filter;路徑封閉
  • [ ] PDF 無未轉曲字型(pdffonts 0 列)
  • [ ] 已標示 RGB/非 PDF-X/無出血
  • [ ] 至少用一種路徑編輯器確認可選錨點(本次:Vectorpea)

複製這段給你的 AI agent

目標:把一張平面插圖整理成印前友善的 SVG/向量 PDF 草稿(練習或內部稿)。

前提:
- 只在本機作業;不要呼叫需金鑰的雲端轉檔 API。
- 不要讀取或輸出任何密碼、Token、API key。
- 不要執行刪除系統目錄、格式化、改全域權限等破壞性指令。
- 禁止把 k-means/quantize/posterize/自動描圖結果當成「客戶交付稿」。

步驟:
1. 讀原圖,手選 2~4 個平色 HEX(寫下取樣座標);需要白色區域時優先用差集鏤空。
2. 手寫或明確參數化 Bézier 路徑;只用 path boolean(如 skia-pathops)做同色聯集與鏤空差集。
3. 輸出 sample.svg(透明底、按色分組)、用 CairoSVG(或同等工具)輸出 PDF,並做 PNG/對照圖。
4. 跑驗收:統計 path/封閉子路徑/節點;pdfimages 與 pdffonts 應為 0 列;記錄 RGB 或 CMYK。
5. 用可取得的路徑編輯器開啟 SVG,確認色層與錨點可編輯;若某軟體裝不起來,改用替代工具並在報告標明。

驗收:報告裡要有色碼、路徑/節點數字、pdfimages/pdffonts 結果、路徑編輯器抽查說明,以及「RGB/非 PDF-X/無出血」等限制句。

安全:不要貼金鑰;付款、訂閱、印廠對帳由人類自己做。