說明
這個 Script(MakeSquare.jsx)可自動將目前開啟的 Photoshop 圖片畫布擴充為接近正方形,並保持原解析度與白色背景,適合批次裁切使用。將檔案儲存至 Photoshop 的 Scripts 資料夾並重新啟動程式後,可在「檔案 > 指令碼」中執行。它會根據圖片最長邊,將畫布擴展為 baseUnit(預設為 150px)的倍數,確保所有輸出的圖片尺寸一致,便於後續比對、標記或製作圖檔集。
目標
最近手頭上遇到一個麻煩的問題,就是要從一張圖片上將多個圖案擷取下來,除了解析度(dpi)要和原始圖片相同(這代表你不能用擷圖軟體),同時還要盡量讓檔案的尺寸相同,所幸我有個先天的優勢,就是圖片的背景顏色為白色,我可以用擴充版面尺寸來解決問題。
- 避免使用者忘記擷取到第幾個圖形
- 盡量保持圖片相同尺寸
秘訣
- 利用 Photoshop 選取 / 複製 / 開新檔案後會記住尺寸的特性
- 利用 Script 處理寬度跟高度,擴充版面尺寸成正方形
- 錄製動作(action)且搭配版面擴充 script
示範
Script 腳本
請將以下腳本儲存為 *.jsx ,接下來會介紹它的用途,我先命名叫做 MakeSquare.jsx
實做
app.preferences.rulerUnits = Units.PIXELS;
// 設定標尺單位為像素
app.preferences.rulerUnits = Units.PIXELS;
// 容錯處理:若沒有開啟任何文件,跳出提示
if (!app.documents.length) {
alert("請先開啟一張圖片!");
throw new Error("沒有開啟的文件");
}
// 取得目前文件的寬與高
var width = app.activeDocument.width;
var height = app.activeDocument.height;
// 定義畫布調整的基本單位與容忍區間
var baseUnit = 150; // 最小畫布尺寸單位(輸出大小會是這個的倍數)
var tolerance = 180; // 尺寸容忍區間(只要小於這就會被調整成 baseUnit)
// 設定白色為背景顏色(當畫布擴展時填入)
var white = new SolidColor();
white.rgb.hexValue = "FFFFFF";
app.backgroundColor = white;
// 根據最長邊計算新的畫布尺寸,並向上取整成 baseUnit 的倍數
var newCanvasSize;
if (width >= height) {
newCanvasSize = Math.ceil(width / tolerance) * baseUnit;
} else {
newCanvasSize = Math.ceil(height / tolerance) * baseUnit;
}
// 執行畫布擴充(正方形)
app.activeDocument.resizeCanvas(newCanvasSize, newCanvasSize);
// 完成提示
alert("畫布已擴充為正方形:" + newCanvasSize + " x " + newCanvasSize + " 像素");
一、 建立擴充版面的 Script
整個 script 的目的在於作到兩件事情:- 利用最長邊成為新版面的寬與高,讓圖片擴增成正方形版面。
- 以 150 pixel 為一個級距,180 pixel 為容許區間,0 ~ 180 pixel 長度以內的圖片都會被調整成 150 x 150 的版面,避免出現小圖片大版面的問題。
二、將 script 加入 Photoshop
- 建立 C:\Program Files\Adobe\Adobe Photoshop CS4\Presets\Scripts\
- 將 Script(MakeSquare.jsx ) 放入以上路徑,script 才會出現 Photoshop 選單
- 重新開啟 Photoshop,你可以在 檔案/指令碼 中看到你的 script 名稱,成功
三、建立動作
- 載入一張圖片到 Photoshop
- 錄製動作,設定 F2 為動作快速鍵(個人習慣)
- 選取→複製→開新檔案→貼上→影像平面化
- 插入選單項目,選取檔案/指令碼/你的 script 名稱
- 停止錄製,扔掉選取檔案的動作
- 利用快速鍵 F2 開始快速裁切
Tags
電腦工具