登入 註冊會員
Google
 
全球 站內資料
管理
Photoshop Scripting-有效的增進工作效率

 
發表新主題   回覆主題   檢舉這一篇文章    DC543攝影家族 首頁 -> 影像後製軟硬體
上一篇主題 :: 下一篇主題  
發表人 內容
hugoyu

暱稱:Hugo
等級:攝影入門班



註冊時間: 2003-06-09
最近光臨: 2008-04-01
性別:男
出版:0 篇

停留: 115 小時 40 分鐘
文章: 93

我的其他文章:
發表【OLY】
發表Vicki @ 西門町(後製版含說明)
發表Peggy @ 西門町
發表MISA - 小羽
發表小八 @ 華山藝文特區
發表發表於: 2004-12-28 10:10:03    文章主題: Photoshop Scripting-有效的增進工作效率 引言回覆 檢舉這一篇文章

(使用版本: 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 可以參考

花點時間研究一下,說不定可以幫你節省更多時間唷 !!
回頂端
檢視會員個人資料 發送私人訊息
smallyan

暱稱:天空魎皇
等級:攝影高級班



註冊時間: 2004-02-02
最近光臨: 2008-01-14
性別:男
出版:0 篇
來自: 台南市東區~~
停留: 221 小時 48 分鐘
文章: 545

我的其他文章:
發表smallyan-我家兒子的寫真書
發表SONY數位相機使用者請注意此討論喔~攸關各位維修的權益
發表smallyan的小寶寶~~~
發表[求助]請問一個DSLR觀景窗的問題
發表秋慧 安平外拍
發表發表於: 2004-12-28 23:14:02    文章主題: 引言回覆 檢舉這一篇文章

em55.gif em55.gif em55.gif em55.gif
hugoyu兄真是太厲害拉~~
將ps cs的壓箱寶給挖了出來了~~
下次有空可要好好跟你請教一番~~

em55.gif em55.gif em55.gif em55.gif
_________________
學習再學習~~
把自己當作空杯~~
把大家的技巧變成自己的~~
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
eddie1973_tw

暱稱:1973
等級:攝影入門班



註冊時間: 2005-03-21
最近光臨: 2007-04-03
性別:男
出版:0 篇
來自: LOMOㄉ迷人世界
停留: 69 小時 13 分鐘
文章: 73

我的其他文章:
發表[分享] 1973之生活隨手攝影
發表[分享]1973之夜遊華納
發表[分享]北海岸--洋荳子咖啡館
發表[分享]1973's LOMO LC-A 隨手拍
發表發表於: 2005-04-12 13:42:42    文章主題: 引言回覆 檢舉這一篇文章

喔喔~~
真的是高手中的高手~~
還寫指令耶
回頂端
檢視會員個人資料 發送私人訊息
dosiris

暱稱:dosiris
等級:攝影入門班



註冊時間: 2005-04-06
最近光臨: 2008-06-05
性別:男
出版:0 篇

停留: 25 小時 21 分鐘
文章: 45

我的其他文章:
發表[哈拉] Nikon 反應慢半拍嗎
發表[哈拉] 養了一隻虎鯨 卻吃素啦
發表來去 自來水博物館
發表住家附近拍拍
發表發表於: 2005-04-12 14:49:17    文章主題: 引言回覆 檢舉這一篇文章

大大什麼時候出書啊 em55.gif em55.gif em55.gif
拜託通知我一聲喔 一定要收藏 em05.gif
_________________
跟我一起反對穿皮草喔!
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    DC543攝影家族 首頁 -> 影像後製軟硬體 所有的時間均為 台北時間 (GMT + 8 小時)
1第1頁(共1頁)
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票