在上一篇天啊!我的Photoshop變聰明了 – 利用指令碼進階自動化入門中提到Photoshop指令碼的基本概念(沒什麼人感興趣…這果然是很冷門的功能XD),這次再來一個進階一點的範例。
有很多人在發表文章的時候,都會替自己的圖片加上版權文字浮水印,雖然網路上可以找到很多這樣的軟體,不過我還是用這個功能作為範例。
Photoshop指令碼,不僅僅可以執行指令,甚至可以自訂使用者介面,透過自訂的介面可以讓指令碼的功能更加人性化、更有彈性。
範例使用方法:
1.將下面的指令碼存成加入文字浮水印.js,CS3版存成加入文字浮水印.jsx,放到「Photoshop安裝目錄\預設集\指令碼\」中。
2.重新開啟Photoshop,就可以在「檔案 >> 指令碼」中找到多了一個「加入文字浮水印」的指令。
3.下載文字浮水印樣式並加入Photoshop中,或自訂一個名為「WatermarkingStyle」的浮水印樣式,例如:斜角與浮雕效果、筆畫效果。
4.執行這個指令碼,就會跳出下圖這樣一個對話視窗:
自動加上文字浮水印指令碼
//Photoshop指令碼加入文字浮水印 beta 1
#target photoshop
var dlg = new Window("dialog", "自動加上文字浮水印",[0,0,220,200]);
dlg.center();
dlg.txt1 = dlg.add("statictext",[5,5,215,25],"請輸入浮水印文字");
dlg.markText = dlg.add("edittext",[5,25,215,50],"http://blog.colorbase.tw.colorbase.tw");
dlg.ok = dlg.add("button",[5,55,105,80],"確定");
dlg.ok.onClick = function()
{
Watermarking(dlg.markText.text);
function Watermarking(varText)
{
if(app.documents.length > 0)
{
var doc = app.activeDocument;
}
else
{
alert("請開啟要加浮水印的圖檔");
return;
}
oldRulerUnits = app.preferences.rulerUnits;
oldTypeUnits = app.preferences.typeUnits;
app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.PIXELS
var layer = doc.artLayers.add();
layer.kind = LayerKind.TEXT;
var text = layer.textItem;
var txtColor = new SolidColor();
var txtRgb = txtColor.rgb;
txtRgb.red = 255;
txtRgb.green = 255;
txtRgb.blue = 255;
text.contents = varText;
text.font = "Vrinda";
text.size = 24;
text.tracking = 200;
text.color= txtColor;
text.kind = TextType.PARAGRAPHTEXT;
text.position = Array( doc.width - text.width,
doc.height - text.height - 5);
layer.applyStyle("WatermarkingStyle");
app.preferences.rulerUnits = oldRulerUnits;
app.preferences.typeUnits = oldTypeUnits;
alert("完成");
}
dlg.close();
};
dlg.cancel = dlg.add("button",[110,55,215,80],"取消");
dlg.cancel.onClick = function(){dlg.close()};
dlg.p1 = dlg.add("panel",[5,85,215,195],"關於作者");
var authorTxt = "作者:顏宏育 Roy Yan\n" +
"部落格:http://blog.colorbase.tw.colorbase.tw\n" +
"作品:http://free.colorbase.tw\n\n" +
"歡迎到我的網站逛逛 ^^";
dlg.p1.txt2 = dlg.p1.add("statictext",[5,15,200,95],authorTxt,
{multiline:true});
dlg.show();
延伸思考:
- 過於冷門的東西多說無意義,就讓它隨著時間洪流消失。







七月 29, 2008 at 11:59 下午
其實冷門代表的正是專業,就因為這東西是具有深度的,所以「知道」與「想知道」的並不多。
不過,千萬別因為冷門就不寫啊,因為文獻一旦放在網路上,有需要的人自然就會隨著 Google 過來了,而不是隨著時間的洪流消失 ^^
七月 30, 2008 at 12:46 上午
其實我有在想,像指令碼這種東西對大部分美術設計專業人員來說
可能真的是太複雜了,他們的專業是在於設計,而不是寫程式
而Photoshop最多的使用者又是這群人
所以軟體設計還是要針對使用族群設計出「簡單易用」的功能
二月 3, 2009 at 3:06 上午
我隨著 Google 過來了。
我就是寫程式的。
就算是寫程式的也有須要畫圖(圖像是闡述想法的好方法)、改圖、處理圖檔的時候,特別是寫遊戲程式的更會經常接觸圖檔。
如果 Photoshop 做到 firefox 那樣有完善的擴充套件機制和一個專門讓人發佈擴充套件的網站,則皆大歡喜了。
二月 11, 2009 at 10:32 上午
嗨 LungZeno
Photoshop的套件控充機制,我覺得應該不會輸給firefox哦
Photoshop也有非常多的plug-in只是好像沒有一個讓人專門發佈的網站
七月 10, 2010 at 3:55 上午
謝謝!多寫一點ps腳本可以嗎?
八月 26, 2010 at 8:48 上午
我也隨著google過來了,
我是視覺人員,工作上有些case需要做重複且大量的動作,
因此想藉由PS script來提昇工作效率,
但是在嘗試撰寫時遇到了一些問題,
比較另我難以解決的是,大大是否有碰過在text.font=』字型』
裡面的字型設定為中文字型讀取不到的情況呢?
我裡面打中文,打英文,打字型檔檔名
(華康新綜藝體、DFZongYi Std、DFFN_G7)
執行結果都無法正確的抓到我設定的字型,
只會套用 用戶字型的第一個(華康標楷體)
想請教大大有無解決之法