Photoshop腳本語言
Photoshop支援三種腳本語言:AppleScript,VBScript,JavaScript。其中AppleScript為蘋果系統,VBScript為Windows作業系統,JavaScript相容於蘋果和Windows作業系統。
Photoshop中使用JavaScript腳本,其腳本檔案後綴必須為*.jsx或*.js檔案。你可以透過檔案(File) >腳本(Scripts) >瀏覽(Browse)開啟並執行JavaScript腳本檔案。
Photoshop物件模型
DOM(Document Object Model)為一個API(Application Programming Interface),你可以透過DOM應用程式腳本語言執行各種操作。
JavaScript腳本
1、Hello World範例
本實例操作如下:1、開啟Photoshop;2、新建一個檔案;3、新建一個ArtLayer圖層;4、將ArtLayer轉換為文字圖層;5、將文字內容設定為「Hello World」。
JavaScript腳本語言為:
//設定單位
##app. preferences.rulerUnits = Units.INCHES
// 新建一個2*4INCHES的檔案
var docRef = app.documents.add( 2, 4 )
//新一個#ArtLayer 圖層
var artLayerRef = docRef.artLayers.add()
##//設定ArtLayer圖層為文字圖層
#artLayerRef.kind = LayerKind.TEXT#//
設定文字圖層文字內容
var textItemRef = artLayerRef.textItemtextItemRef.contents = " Hello World"
//
#釋放參考
docRef = nullartLayerRef = null
textItemRef = null
實現效果為:
2、取得Application物件物件
你可以透過預先設定的全域物件app來取得Photoshop Application物件。下面的範例說明如何取得一個Document檔:
##var docRef = app.documents[0]
上面的表達式也可寫為:
var docRef = documents[0]
3、新建一個物件
你可以透過File > New新建一個PSD檔案。別的類型的如圖層、頻道、路徑等,你可以用過選單或別的方式新建。在JavaScript腳本中,你可以透過add()實現物件的新建。例如:1) 新建一個PSD檔documents.add()
或app.documents.add()2) 新建一個ArtLayer圖層
documents[0].artLayers.add()
4、設定啟動物件
1) 設定啟動檔案var docRef = app.documents[0]
app.activeDocument= docRef
2) 設定啟動ArtLayer圖層
docRef.activeLayer = docRef.layers[0]
3) 設定啟動頻道
#docRef.activeChannels = new Array(docRef.channels[0], docRef.channels[2])
5、開啟一個檔案
Photoshop能開啟的格式多種多樣,所以可以選用open/Open/open()指令開啟一個已存在的檔案。 1) 開啟一個PSD檔案var fileRef = File("C:/Users/Administrator/Desktop/test.psd")
var docRef = app.open(fileRef)
#
2) 開啟一個Pdf檔
//設定單位
var originalRulerUnits = app.preferences.rulerUnits
app.preferences.rulerUnits = Units.PIXELS
// 取得開啟檔案的名稱
#var fileRef = new File("C:/Users/Administrator/Desktop/myfile.pdf")
//#新一個PDFOpenOptions
var pdfOpenOptions = new PDFOpenOptions
pdfOpenOptions.antiAlias = true
pdfOpenOptions.antiAlias = true
pdfOpenOptions.antiAlias = true
pdf ##pdfOpenOptions.mode = OpenDocumentMode.RGB #pdfOpenOptions.resolution = 72
pdfOpenOptions.page = 3
//
開啟檔案
app.open( fileRef, pdfOpenOptions )##6、儲存檔案
Photoshop可儲存的檔案格式如下:
1) 儲存為jpg圖片
#jpgFile = new File( "C:/Users/ Administrator/Desktop/test.jpg" )jpgSaveOptions = new JPEGSaveOptions()
jpgSaveOptions.embedColorProfile = true
jpgSaveOptions.embedColorProfile = true
jpgSaveOptions.embedColorProfile = true
##jpgSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE
jpgSaveOptions.matte = MatteType.NONE
jpgSaveOptions.quality = 1
#app.activeDocument.saveAs(jpgFile, jpgSaveOptions, true,Extension.LOWERCASE)##6、layer層物件
裡麵包含兩個layer層物件:圖層(ArtLayer)和群組(Layer Set)。 1) 建立一個ArtLayer圖層物件
//#新檔案
app.documents.add ()
//新建層
#var layerRef = app.activeDocument.artLayers.add()
//設定層名稱
#layerRef.name = "MyBlendLayer"
#layerRef.blendMode = BlendMode.NORMAL
2) 建立一個群組
//#新檔案和圖層
app.documents.add()
var layer=app.activeDocument.artLayers.add()
layer.name="layer"
//新群組與圖層
var newLayerSetRef = app.activeDocument .layerSets.add()
newLayerSetRef.name="layerset"
var layerset=newLayerSetRef.artLayers.add()
layerset.name="layerset"
7、應用Layer Set物件 你可以將一個圖層移到一個群組裡,也可以進行圖層連結等操作。1) 複製圖層到群組
//新文件,新圖層,新群組,並複製圖層到群組
var docRef = app.documents.add()
docRef.artLayers.add()
var layerSetRef = docRef.layerSets.add()
var layerRef = docRef.artLayers[0].duplicate(layerSetRef,ElementPlacement.PLACEATEND)
2)連結圖層var layerRef1 = docRef.artLayers.add()
#########var layerRef2 = docRef.artLayers.add()###### ######layerRef1.link(layerRef2)#########8、應用文字物件######1) ArtLayer轉換為文字圖層。 #########var newLayerRef = docRef.artLayers.add()############newLayerRef.kind = LayerKind.TEXT##########2) 給文字層新增文字#########var textLayerRef = docRef.artLayers.add()#######textLayerRef.name = "my text"
textLayerRef.kind = LayerKind.TEXT
var textItemRef = docRef. artLayers["my text"].textItem
textItemRef.contents = "Hello, World!"
textItemRef.justification = Justification.RIGHT
9、應用選擇物件
1) 建立和定義選擇
var docRef = app.documents.add(500, 500)
var shapeRef = [
[0,0],
[0,100],
[100,100],
#[100,0]
]
2) 新增邊框
strokeColor = new solidColorstrokeColor.cmyk.cyan = 20
#strokeColor.cmyk.magenta = 50
strokeColor.cmyk.yellow = 30
strokeColor.cmyk.black = 0
#strokeColor.cmyk.black = 0
app.activeDocument.selection.stroke (strokeColor, 2,StrokeLocation.OUTSIDE, ColorBlendMode.VIVIDLIGHT, 75, false)#var selRef = app.activeDocument.selection
#selRef.invert()