在上一篇天啊!我的Photoshop變聰明了 – 利用指令碼進階自動化入門中提到Photoshop指令碼的基本概念(沒什麼人感興趣…這果然是很冷門的功能XD),這次再來一個進階一點的範例。

有很多人在發表文章的時候,都會替自己的圖片加上版權文字浮水印,雖然網路上可以找到很多這樣的軟體,不過我還是用這個功能作為範例。

Photoshop指令碼,不僅僅可以執行指令,甚至可以自訂使用者介面,透過自訂的介面可以讓指令碼的功能更加人性化、更有彈性。

範例使用方法:

1.將下面的指令碼存成加入文字浮水印.js,CS3版存成加入文字浮水印.jsx,放到「Photoshop安裝目錄\預設集\指令碼\」中。

2.重新開啟Photoshop,就可以在「檔案 >> 指令碼」中找到多了一個「加入文字浮水印」的指令。

3.下載文字浮水印樣式並加入Photoshop中,或自訂一個名為「WatermarkingStyle」的浮水印樣式,例如:斜角與浮雕效果、筆畫效果。

4.執行這個指令碼,就會跳出下圖這樣一個對話視窗:

5.完成後如下圖:

自動加上文字浮水印指令碼

//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();
延伸思考:

  • 過於冷門的東西多說無意義,就讓它隨著時間洪流消失。

Tagged : , , ,

你可能會感興趣

“Photoshop 利用指令碼自動為圖片加入版權文字浮水印” 目前共有 6 則迴響

  1. 其實冷門代表的正是專業,就因為這東西是具有深度的,所以「知道」與「想知道」的並不多。

    不過,千萬別因為冷門就不寫啊,因為文獻一旦放在網路上,有需要的人自然就會隨著 Google 過來了,而不是隨著時間的洪流消失 ^^

  2. 其實我有在想,像指令碼這種東西對大部分美術設計專業人員來說
    可能真的是太複雜了,他們的專業是在於設計,而不是寫程式
    而Photoshop最多的使用者又是這群人
    所以軟體設計還是要針對使用族群設計出「簡單易用」的功能

  3. 我隨著 Google 過來了。
    我就是寫程式的。
    就算是寫程式的也有須要畫圖(圖像是闡述想法的好方法)、改圖、處理圖檔的時候,特別是寫遊戲程式的更會經常接觸圖檔。
    如果 Photoshop 做到 firefox 那樣有完善的擴充套件機制和一個專門讓人發佈擴充套件的網站,則皆大歡喜了。

  4. 嗨 LungZeno

    Photoshop的套件控充機制,我覺得應該不會輸給firefox哦
    Photoshop也有非常多的plug-in只是好像沒有一個讓人專門發佈的網站

  5. 謝謝!多寫一點ps腳本可以嗎?

  6. 我也隨著google過來了,
    我是視覺人員,工作上有些case需要做重複且大量的動作,
    因此想藉由PS script來提昇工作效率,
    但是在嘗試撰寫時遇到了一些問題,
    比較另我難以解決的是,大大是否有碰過在text.font=』字型』
    裡面的字型設定為中文字型讀取不到的情況呢?
    我裡面打中文,打英文,打字型檔檔名
    (華康新綜藝體、DFZongYi Std、DFFN_G7)
    執行結果都無法正確的抓到我設定的字型,
    只會套用 用戶字型的第一個(華康標楷體)
    想請教大大有無解決之法

留下迴響





*