Skip to content
t42ji2jiPublic

About

把 Procreate 匯出的 PSD 每個圖層裁到實際內容邊界,給 Live2D Cubism 用(附 PNG 版)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

psd-trim

把 Procreate 匯出的 PSD 每個圖層裁到實際內容邊界,給 Live2D Cubism 用。附帶一個 PNG 版。

為什麼

Procreate 匯出 PSD 時,每個圖層都是整張畫布大小(內容以外補透明)。匯進 Live2D 後,每塊 part 都一樣大、都疊在畫布正中央,很難點選、也難擺 mesh。這個工具把每層裁到 alpha 的 bounding box,位置資訊由 PSD 圖層自帶的座標保留,所以外觀完全不變。

用法

./trim-psd 檔案.psd [輸出.psd]     # 不指定輸出 → 檔案_trimmed.psd
./trim-png 圖.png [圖2.png ...]    # → 圖_trimmed.png

也可以直接跑 python trim_psd.py ...。

安裝

git clone https://github.com/<you>/psd-trim.git
cd psd-trim
python3 -m venv venv
./venv/bin/pip install -r requirements.txt

包裝腳本 trim-psd / trim-png 會找同目錄下的 venv。

做法

直接編輯原始 PSD 的低階結構,而不是重建一個新 PSD。 這是相容度的關鍵。

用 psd_tools.psd.PSD 低階讀檔,只改「滿版像素層」的 top/left/bottom/right 和各通道資料。其餘一律保留 Procreate 原樣:header、image resources、全域遮罩、圖層名稱(含中文 / 群組 / 巢狀 / 順序 / 透明度 / 混合模式 / 顯示隱藏)、檔尾合成預覽,全部不動。因此 Live2D 讀它就跟讀原檔一樣。

早期版本改用 pytoshop 從零重建整個 PSD:Photoshop 和 macOS 預覽都讀得進、逐像素比對也正確,但 Live2D Cubism 的讀取器較嚴格,拒絕這種「最小化」PSD,已淘汰。

不處理的情況(會印出來告知):

  • 含使用者/向量遮罩的層 → 跳過,避免破壞遮罩幾何
  • 全透明空層 → 保持原樣
  • 裁完仍滿版的層 → 通常是有橫跨整張畫布的參考線或雜點,得回 Procreate 擦掉

PNG 版就是單純用 PIL 裁到 alpha bbox。PNG 沒有圖層座標,裁完位置資訊會掉,所以工具會印出原畫布上的 offset x/y,之後對位用。

驗證

讀回輸出檔、逐層手動 alpha_composite 疊圖與原檔比對,像素差為 0;並用 PIL.Image.open(讀的是內嵌合成預覽)確認預覽不是全黑。實際成品已確認可匯入 Live2D Cubism。

About

把 Procreate 匯出的 PSD 每個圖層裁到實際內容邊界,給 Live2D Cubism 用(附 PNG 版)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages