回論壇首頁
論壇主選單 > ☆色彩管理/影音軟體版 > Photoshop Scripting - 讓工作更有效率
作者  
討論話題
 

hugoyu


網路會員

2004/12/27 20:09
器材: 其他 其他
(使用版本: photoshop cs)

會忽然研究 Photoshop Scripting,是因為想把一些照片放到 P910i 裡面
一開始,我都是在 photoshop 裡面把圖片 resize,好了之後就直接放進去手機裡面
但是我發現,由於P910i 螢幕的最大顯示尺寸是 320 * 208
所以放進去的照片,如果想要得到最好的觀看效果
最好不要讓高 (height) 超過 320 pixel,寬 (width) 超過 208 pixel

為什麼不要超過,有三個原因

1.太大的圖片佔空間,LOADING 也太慢,不經濟!!
2.1:1 看圖的時候,必須捲動才能看到整張圖,麻煩!!
3.fit screen 的話,圖看起來會有不太自然的擠壓感,怪異!!

有鑑於此,放到 P910i 的圖必須要遵守 :高 (height) 不超過 320 pixel,寬 (width) 不超過 208 pixel
如此一來就能夠很順的一張接一張地看

但是問題來了,photoshop 裡面的 action 很方便,錄製一次就能夠批次的作縮圖的動作
可是因為圖片的比例不可能每張都一樣,所以常常會高、寬超出我的上限
比如說,在 action 裡面, resize 的時候,我去改變高,讓高等於 320 pixel,寬度就會因為強制比例的關係,而縮到原圖比例的寬度
但是剛剛提過,每張圖的比例不同,把高縮到 320 pixel,有可能寬度會小於 208 pixel,但也很有可能會超過 208 pixel
反過來看,如果 action 裡面是去改變寬度,讓寬等於 208 pixel,高也有可能會出現高過 320 pixel 的情形

也就是說,action 只能忠實的把你的動作錄製下來,把該做好的事情做好,但是不夠聰明
之後我就去翻 photoshop 的線上說明,發現到,photoshop 有個叫做指令碼的東西

Photoshop 的指令碼支援三種 script

1.Visual Basic (Windows)
2.Applescript (Mac OS)
3.Javascript (跨平台)

這邊我選擇 Javascript 來撰寫我要的指令碼
有人或許會問,幹麻大費周章去寫什麼指令碼,不是很麻煩嗎?
是麻煩沒錯,但是利用指令碼,我們可以讓要執行的工作更有彈性
因為寫程式,不外乎就是可以加入邏輯概念,才能夠依照不同的條件,去作所需的處理

底下的程式碼,目的是為了要把圖片縮到我想到的 size
這個 size 的條件是,圖片 fit screen 的時候,必須以 1:1 呈現 (這句話好像有難懂 ^^||| )
以程式流程的角度來敘述是:

我先計算一下如果縮圖的時候先讓高等於 320 ,算出來如果寬小於或等於 208,就符合這個條件(圖片 fit screen 的時候,必須以 1:1 呈現)
如果這時候寬大於 208,那麼我在縮圖的時候就先把寬改成 208,那麼也會符合 (圖片 fit screen 的時候,必須以 1:1 呈現)

當算出需要的高跟寬之後,就去作縮圖的動作,最後並順便將圖片做銳利化

程式如下,這個指令碼寫的不是很漂亮,有點垃圾在裡面,不過達到我的目的後,我就懶得改了

if (app.documents.length == 0)
{
var docRef = app.documents.add();
}
else
{
var docRef = app.activeDocument;
}

var PH = 320;
var PW = 208;
var PRESOLUTION = 72;

// 得到目前圖片的寬跟高
var dh = docRef.height;
var dw = docRef.width;

var fw = 0;
var fh = 0;

// 直幅橫幅圖片的處理
if( dh < dw)
{
var PH = 208;
var PW = 320;
}

// 算出 高 = 320 好,還是寬 = 208 比較好
var rw = dw / (dh / PH) ;

if( rw < PW)
{
fw = rw;
fh = PH;
}
else
{
fh = dh / (dw / PW) ;
fw = PW;
}

// 開始縮圖
docRef.resizeImage(fw, fh, PRESOLUTION, ResampleMethod.BICUBIC);

//銳利化
docRef.activeLayer.applyUnSharpMask(200, 0.3, 0);

指令碼寫好後,將它存在 photoshop安裝路徑預設集指令碼範例指令碼.js
photoshop 重開之後,我們會在 檔案 > 指令碼裡面看到他,名稱會是我們儲存指令碼時候的檔名

接下來,我們就可以對開出來的圖片做指令碼裡面的處理,或是直接用一個 action 去執行指令碼喔

上面只是簡單的例子,事實上,photoshop scripting 內建了很多非常強大實用的 function
花點時間去讀一下手冊,會發現指令碼幾乎什麼事情都可以做,而且更有彈性 (因為可以加入邏輯咩)
你可以在 photoshop安裝路徑指令碼手冊 裡面看到四個 pdf 檔案,這些是手冊
而該資料夾裡面,還有一些 sample 可以參考

花點時間研究一下,說不定可以幫你節省更多時間唷 !!

kuniaki


網路會員

1) 2004/12/28 00:49 
感謝提供.
我不會寫Java Script, 目前常用的幾個動作, 自己是有做成action存起來.
另外提供一個網站, 作者把很多常用的動作都做成action免費提供大家下載. 真的不錯用, 很省時間. 有需要的話, 參考一下囉.
http://www.thelightsright.com/default.htm

舞庚無影


終身 VIP

2) 2005/01/07 16:00 
非常感謝您的提供,小弟也是最近才開始注意photoshop action的妙用

uduh


網路會員

3) 2005/03/31 11:45 
請問還有那裡可以找到相關的中文資訊…^^|||
回上一層 第1頁 / 共1頁 到第 1
手札小舖熱門商品
【2012攝影年鑑】★攝影家手札2012年度鉅獻正式登場!!
【Nikon 1完全活用解析】全新系統完全剖析!
【駕馭閃光燈】最完整的閃燈指導教本!!
【Sony α NEX-C3‧NEX-3‧NEX-5完全上手】熱購中!!
數位攝影達人超值包【就是愛 構圖】+【數位單眼達人速成】74折
攝影家手札數位影像坊DV哈燒網KeyBuy藝廊論壇
服務信箱:242204 新莊副都心郵局第12信箱 │ 會員服務部:02-85215082(上班時間早上9點~下午6點) 和平東路三段276號 │ 廣告專線:0937-887229 │ 總瀏覽1168159194人 │ 線上1766人
攝影家手札科技有限公司 版權所有 © 2017 PhotoSharp All Rights Reserved. 非經許可,請勿任意轉載、出版本站內容