2013-12-17 藍藍設計的小編
轉載藍藍設計( m.ssll180.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供有效的 BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務
來源:http://www.uisdc.com/100-things-you-should-know-about-design
如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里
自動化對每個設計師的工作來說是很有用的。它可以在重復的任務上節省寶貴的時間,還能夠幫我們更快捷、更容易的解決一系列問題。
你可以使用photoshop的動作來使工作流程自動化,這是很流行的,大多數人都知道并且已經在使用的方法。今天,我們將介紹給你一種高級的自動化技巧:腳本語言。所有的這一切僅僅需要你有一點點關于JavaScript的基本知識,這對于我們中的一些網頁設計師往往都是具備的。
我很多年前就知道Photoshop的腳本語言,但是我幾個月前才開始決定研究它。我忽視了它是因為我認為那是聰明的具有數學思維能力的程序員的領域。但是我錯了,今天我將要來告訴大家,盡管它需要一些基本的程序技巧,腳本語言并不是那么難掌握。
但是,一開始,我們得回答以下這幾個明顯的問題:
為什么我們在Photoshop已經有了很棒的動作之后還要需要學習腳本語言?答案是交互性!當你使用動作時,你不能真正的控制它在不同情況下的表現,就像錄像帶不停的一遍又一遍的播放而沒有任何改變。
一個腳本語言更靈活,它表現形式的改變取決于你輸入的參數或者是應用程序的內容。聽起來很有用?不是么?
你不需要是一個會寫腳本語言的高級的程序員。我就僅僅是一個平面設計師,就像你們大多數人一樣。但是你需要對JavaScript至少有一個基本的了解,以及一些屬性和方法的經驗去領悟這篇文章的大部分內容。
如果你對JavaScript一點都不了解,別害怕!有很多地方你可以了解程序的一些基本知識。例如:Codecademy,有很棒的完整的交互式課程。
我使用CS5,但是這篇文章中講的也同樣適用于新版本。Adobe從CS5開始已經沒有對其腳本API進行更新。我會選擇看的腳本文檔版本,雖然它是cs6的.
當你開始在PS中記錄動作的時候,你設定了一個達到某一結果的步驟順序,這就是你的算法。然后你按下開始動作,在PS里面就一個接一個的重復你剛才的動作。腳本也差不多,但是不會一步一步的在PS中完成,而是你把它們一條一條的寫出來。在PS里面大多數你想要完成的動作都有相同的功能按鈕可以完成。
如果你需要創造一個動作將你的文件從原始大小放大到150%,你需要完成以下幾步:
1,打開圖像-圖像大小
2,長寬輸入150%
3,點擊確定。
同樣的腳本語言會是這樣寫:
1,為這個應用命名為:app
2,選中文件:activeDocument
3,把這個屬性命名為重設圖像大?。簉esizeImage(width,height)
代碼就是這樣:
有三種方式在PS里面寫腳本:在mac上用AppleScript, Windows用VBScript,或者用JavaScript在兩者上都可以。我使用第三種方式,因為它可以跨平臺,并且我有一定JavaScript的基礎。
Adobe有它自己的寫腳本的工具,叫做:ExtendedScript Toolkit.
ExtendedScript Toolkit的主界面就是這樣的
這個工具包在PS里面,你可以在這個文件夾中中找到:
Mac OSX: /Applications/Utilities/Adobe Utilities CS6/ExtendScript ToolkitCS6/
Windows: C:\Program Files\Adobe\Adobe Utilities-CS6\ExtendScriptToolkit CS6(64位的Program Files(x86))
ExtendedScript Toolkit的用戶界面非常的簡單。開始寫代碼,第一步就是要在下拉菜單中選擇目標應用。如果PS已經在運行,就可以看下下拉菜單旁邊的綠色鏈接圖標:
這個時候,你可以像這樣寫:
按cmd+R(或者直接在工具欄上點擊“播放”按鈕)來運行你寫的代碼。ExtendedScript Toolkit將會轉換到PS里面然后彈出提示框:
ExtendedScript Toolkit 有一些其他的調試代碼的不錯特性,但是這一段代碼就這樣就夠了。你可以通過:幫助-JavaScript Tools Guide學到更多如何使用它。
你可以使用任何文本編輯來寫代碼,只需要保存為.jsx格式文件就好了。你必須在PS里通過File-Scripts-Browse來找到并運行它。 或者是,在PS里面打開腳本文件。你也可以在腳本的前面加上一行代碼,這樣這個代碼就會常在PS里面打開:
直接保存你的代碼在 Photoshop/Presets/Scripts/,然后通過File-Scripts訪問它們。你也可以設定一個快捷鍵,前往Edit-Keyboard Shortcuts,鏈接到 File-Script-[你的代碼名稱],然后選擇一個你想要設定的快捷鍵。
ExtendedScript Toolkit可以在整合的開發環境下運行和調試代碼,同時它還有一個目標模型指示器來安裝,這是很有用的。所以我推薦使用toolkit來寫腳本。不幸的是,Mac版本的有時候會崩潰,所以要記住這一點。
為了使腳本寫起來簡單些,你需要懂得在Photoshop文件對象模型(DOM)中事件是怎樣互相聯系的。如果你觀察PS本身,理解起來并不困難。PS的DOM里面最主要的對象就是應用程序。在應用程序里面,我們有一個文件夾在PS里面是當前打開的。
每一個文件包含一些元素:例如圖層(被稱為Artlayers),圖層組(layerSets),通道,歷史記錄等等–就像一個普通的PSD文件。
下面就是一個簡單的可視化的PS的DOM。更詳細的包含層級的可以在”Adobe Photoshop CS6 Scripting Guide”Pdf文件中12頁里找到。
一個簡單的可視化的Photoshop DOM
這里面的每一個目標都有它自己的屬性和方法你可以編輯它。例如,在一個文件中改變所選圖層的透明度,你就可以前往Application-Document-layer-Opacity然后選擇你的期望值。代碼就是這樣寫:
你應該可以猜到,activeDocument和activelayer決定了當前選擇的文件和圖層。
你可以在“Adobe Photoshop CS6 JavaScript Scripting Reference”PDF文件中找到大部分的目標和它們的屬性和方法的說明,或者在ExtendedScript Toolkit中通過前往help-object Model Viewer.
讓我們來看看在一個真實的例子中是如何運行的。在接下來的段落中,我們將會基于一個動作寫一段我們自己的代碼。
用代碼來重現自我旋轉動作
幾年前的圣誕節,我有一個想法就是用動作幫助我畫一個雪花。
1,首先畫一支雪花的圖案。
2,復制這一支,同時旋轉一定的角度。
3,重復第二步直到一個完整的圓。
手動去復制和旋轉每一個元素非常麻煩,所以我想出了一個自動的動作(an action to automate it)去完成它。算法是這樣的:
1,復制元素。
2,使用變化工具按照你所選擇的角度去旋轉這個元素。
3,復制圖層。
4,使用“重復變換”功能。
5,重復動作4和5直到一個完整的圓。
非常不錯!但是這個動作有一個缺點:根據你在第三步設定的角度數值的算法,你只能設定一定數量的雪花的分支。
回到當我還不是很熟悉腳本的時候,我做了幾個版本的動作,每一種產生的雪花都是不同的分支數。
今天,我們將用你輸入分支的數值的動態腳本來重繪這個動作,讓我們開始吧。
當你開始寫腳本的時候,在挖掘代碼本身之前先設定算法是個不錯的主意。在我們的情況下,算法將會是這樣的:
1,詢問用戶輸入分支的數目。
2,計算旋轉的角度。
3,通過第一步設定的數目來復制并旋轉圖層。
首先讓我們從把當前或選定的圖層作為變量保存起來,為了將來使用:
在JavaScript 中注意,你可以標記兩條雙斜線(//)做注解。注解被用來為未來相關部分的代碼做解釋但是不影響腳本的運行。
現在讓我們回到我們的算法上。
1,要求用戶輸入
我們通過prompt(message,defaultvalue[,tittle])這個功能來獲取用戶的輸入信息:。這個功能表明一個有著”message”對話框和一個包含這”fefault value”的輸入框。當用戶點擊“確定”,這個給你功能就回到輸入值;因此,我們需要保存它為一個可是用的變量。
注意我使用了“orginalStem.name”在這段信息里面。所以對話框會現實所選擇圖層的名稱。
在Mac OS X中,在信息中的第一行是寬的,作用是標題。因此,我們主要的信息應該在第二行。另起一行,輸入“\n”.
在Windows中,你可以在功能中指定第三種參數來設定一個標題:
如果我們在PS中運行這個代碼,將會看到這樣一個對話框:
當用戶點擊“確定”,輸入值將會保存到stemsAmount變量中。如果用去點擊“取消”,這個功能將會返回一個無效值。這個我們后面要使用到。
2,計算旋轉的角度
為了計算旋轉的角度,我們需要通過分支的數目來分360度(一個整圓):
3,復制和旋轉
現在我們已經有了我們需要復制的分支的一切。為了這樣去做,我們將使用“for”循環。它可以讓我們按照我們想要的次數來反復的運行一段代碼。我們的循環將會是這樣的:
注意第一個在程序中的對象例子已經有了值為0,但是因為我們第一個圖層已經在畫布上了,我們從1開始這個循環。
為了輔助和旋轉我們的圖層,我們將會使用:duplicate()和rotate(angle,AnchorPosition)函數:在angle里面被旋轉圖層的數目通過復制的指數相乘而得。 Anchorposition決定了哪個圖層將會旋轉的點。當你在PS中使用旋轉工具的時候你可以看到這個點—它看起來是一個小小的加了十字的圓圈。在腳本中,它僅有9個指定的值-i.e.9個位置的錨點:
在我們這個情況下,它是這個圖層按鈕的中心。BOTTOMCENTER. PS在這里或那里的一些功能上使用了很多其他的一些常量,你可以在”Adobe Photoshop CS6JavaScript Reference”PDF文件中的197頁找到。因此我們的循環就是這個樣子:
完整的代碼就是下面這個樣子,你可以試著運行:
我通常會試著使用腳本來完成我的主要目的。當一切都正確的運行起來的時候,我將會開始優化代碼。在我們這種情況下,我們需要確保用戶在提示框中輸入一個有效的數值—i.e.一個正整數,而且要大于1。
當然,為了不讓PS瘋掉,我們會限制分支的書目,我們規定,小于100.為了這么做, 當他們提交了一個無效的數值的時候 ,我們需要使用一個“while”循環來告訴用戶一個錯誤的信息。而且這個提示框將會一直存在,直到用戶輸入一個有效值或者點擊“取消”按鈕。(記住如果用戶點擊取消將會提示無效值)。
新的代碼將會是這樣的:
你可能注意到:我們使用了“isNaN(value)”這個功能,它返回 “true”如果 “value”不是一個數字,同時當我們計算旋轉的角度的時候,“parseInt(value)”把“value”轉換成一個整數。
接下來我們要做的事情是管理圖層,通過為它們增加一個索引來重命名我們的圖層。同事也要確保我們不會把文件的圖層搞亂,讓我們把我們的分支編組。
為圖層重命名不是一個很難的事情。我們只需要使用圖層的“name”屬性,然后為它們增加一個索引數字:
PS應用程序界面里的編組被稱為“LayerSet”,我們通過“layerSets”屬性可以進入文件的所有編組。為了給文件增加一個新的組,我們需要稱“layerSet”方法為“add()”:
然后,為了把一個圖層增加到組里面,我們會使用“move(relativeobject,ElementPlacement)”函數。請注意,“move()”函數只是把圖層移動到圖層堆,而不是移動到畫布上。(你可以用“trabslate(deltaX[,deltaY])”函數把圖層移動到畫布上)
ElementPlacement是另外一個常量,這個常量決定我們怎樣把的圖層跟 relativeobject 關聯在一起。在我們的案例里,我們使用ElementPlacement.INSIDE 把一個普通圖層放進一個組里面:
我們使用 ElementPlacement.PLACEATEND.把每一個拷貝的新圖層放在所有圖層租的底部。結果就是我們的所有圖層都是以上升的順序排列,第一個圖層在頂部,最后一個圖層在底部:
你可以在”Adobe Photoshop CS6 Scripting Guide”Pdf文件中202頁里
找到更多關于“ElementPlacement”的內容。
就是它,RotateMe.jsx搞定! 我們最終的代碼就是這樣:
沒那么難,哈?
現在,你可以把這個保存在photoshop/presets/Scripts/文件夾里面,然后前
往File-Script運行。使用不同的形狀和不同的賦值可以產生有趣的結果:
你可以從在后面的資源包里面鏈接序號看到,除了文章中介紹的之外還有很多想要講的。但是我希望我們今天所講的能夠激發你的興趣,向你展示了腳本的作用和巨大潛力。
如果你想下水試試,讓我們一起來學習和交流經驗吧。你在后面的評論中提出問題或者分享你所做的。如果你不是一個程序員,可以考慮留下一個關于腳本編寫的好主意吧!或許其他的讀者會實現它。讓我們一起來使PS更加有用吧!
1,Adobe Photoshop Scripting ,Adobe Developer Connection
所有的腳本文件和實用功能
2,Adobe Introduction to Scripting ,(PDF),Adobe
這個是一些Adobe應用程序的基本代碼。不錯的是PS的腳本可以適用于所有的其他Adobe產品,你只需要學習應用的DOM,你就可以上路了。
3,Adobe Photoshop CS6 Scripting Guide ,Adobe
在這個PS腳本介紹指南里面,你可以學到寫腳本的基本知識。
4, Adobe Photoshop JavaScript Reference ,(PDF),Adobe
這個文件描述了你可以在PS里面用到的所有的對象和他們的函數以及方法。這也是我在寫腳本的時候用的最多的文件。
5, JavaScript, Mozilla Developer Network
這里面有關于一般的JavaScript函數和用法的各種問題的答案。
6,JavaScript Tools Guide, PDF,Adobe
這里面有一些關于“ExtendedScript Toolkit”的基本信息,和一些高級技
巧。例如文件系統的存取,ScriptUI, XML的使用,sockets等等。
一個獨立的關于PS腳本的論壇。我不能注冊參與討論(因為某些未適應系統),但是它有很多可以被發現的解決問題的答案。
8, Photoshop Scripting,Adobe Community
Adobe的PS腳本官方論壇,有一些很好的在用戶使用的過程中遇到的問題的討論。
原文地址:smashingmagazine
譯文地址:mxd.tencent
編譯:騰訊timmliu 校正:sevenshao&charrywang