1.photoshop腳本的語言環(huán)境是JAVA。
與coreldRAW不同,adobe公司出品的軟件,例如photoshop,flash等等,動作和腳本支持的語言環(huán)境是JAVAScript,coreldRAW的宏的語言環(huán)境是VBA。
JAVA跟C語言比較像,都是面向?qū)ο蟮某绦蛘Z言,而VBA跟VB差不多,是面向過程的程序語言。
coreldRAW的宏文件gms必須在Microsoft VisualBasic窗口里面才能編輯,但是photoshop的腳本jsx文件,可以在文本文檔里面編輯,這點(diǎn)非常具有開拓性,因?yàn)椴皇撬须娔X都裝有編程軟件,但是所有電腦都有文本文檔。
我在javascript窗口里面編輯過jsx腳本,也在文本文檔里面編輯過,感覺在文本文檔里面編程的感覺很奇妙,沒有關(guān)鍵詞提示,也沒有自動糾錯,而且,也不是亂碼,真的很奇妙。
2.如何新建一個photoshop腳本。
因?yàn)閒lash是動作,所以腳本以photoshop為例。
隨便在任何位置,新建一個文本文檔.txt,后綴名是.txt,把這個后綴名改成.jsx,就是文本文檔.jsx,一個空白腳本就建立完了。
3.如何運(yùn)行一個photoshop腳本。
好像是photoshop cs以上版本才有運(yùn)行腳本的功能。
Photoshop窗口,文件——腳本——瀏覽,載入需要運(yùn)行的腳本文件,就運(yùn)行了腳本。
其實(shí),photoshop的批處理、錄制動作等等功能都挺強(qiáng)大的,能滿足很大的要求,而編輯腳本,是精益求精,更上一層樓的選擇,對工作人員的個人能力要求很高,首先,你需要有一定的編程基礎(chǔ),對JAVA語言有些了解,其次,你需要對于photoshop的一些專有代碼有了解,最后,英語最好好一些,因?yàn)?,最有用的photoshop腳本的幫助文檔都是純英文的,中文的書籍教程資料很少。我英語不好,所以,我看幫助文檔和向?qū)?,都快看吐了?/p>
知識因?yàn)榉窒矶袃r值,學(xué)習(xí)因?yàn)榻涣鞫爝M(jìn)步。
我在這里分享幾個javascript的腳本,希望能幫助到看此文的朋友。
這是我第一次寫腳本,因?yàn)槲矣幸欢ǖ某绦蚧A(chǔ),coreldRAW的VBA我寫得很多,但畢竟語言環(huán)境不一樣,幸好,我最近在做flash的東西,一些功能原有模塊無法實(shí)現(xiàn),必須自己編寫程序,所以短期強(qiáng)化了一下JAVA編程語言,沒想到竟然趕鴨子上架用上了。
挺巧合的,技多不壓身,用上了也好。
因?yàn)槲乙彩堑谝淮尉帉懩_本,所以內(nèi)容也很簡單,對于初學(xué)者應(yīng)該有幫助。
我先介紹一下我的目的。
假設(shè),我有800張1960年的航片,我需要將這800張航片拼接成一個大圖像。
1.
我需要先把這800張航片掃描成電子版,文件格式為tif格式,并把這些航片編號(紙質(zhì)航片的原編號就可以)。1960年的航片都是紙質(zhì)照片,只能這么做。
2.
根據(jù)航片的編號,確定這些航片涉及幾條航帶n,每條航帶上有多少張航片m;
在photoshop中打開一條航帶上的兩張相鄰航片,量算出航片之間的重合度x(不是百分百,是距離);
然后打開兩條相鄰航帶上兩張相鄰航片,量算出航帶之間的重合度y(不是百分百,是距離)。
3.
打開photoshop,文件——自動——聯(lián)系表,根據(jù)航帶和航片的數(shù)量,還有航片的尺寸,確定寬度、高度、列數(shù)、行數(shù),根據(jù)航向確定位置,生成聯(lián)系表文件,注意不要勾選“拼合所有圖層”,拼完的文件會是一個分圖層的psd文件。
這是Photoshop拼影像的方法,因?yàn)槔虾狡际菕呙璧?,沒有電子文件,也不帶坐標(biāo),所以這么拼接,但如果是新的航片,帶坐標(biāo)文件的,一般都用erdas拼圖就可以了。
注意Photoshop的拼圖功能,此處不贅述了。
4.
Photoshop聯(lián)系表的間距不能有負(fù)數(shù),但是航片有重合度,必須是要有負(fù)數(shù)的。
關(guān)于這點(diǎn),除了JAVA之外,還可以錄制動作批處理,可以先錄制裁切的動作,把每張航片的重復(fù)內(nèi)容裁切掉,在聯(lián)系表里面以0間距來拼合圖像。
這是一種方法,我這里介紹JAVA腳本。
聯(lián)系表拼合完之后,可以看到生成psd文件,每張航片是一層,圖層名就是航片的名稱,錄制動作批處理也能實(shí)現(xiàn)目的,只不過比較麻煩而已。
5.腳本代碼,有些東西三言兩語解釋不清,自己看程序代碼吧。
以下代碼是一條縱向航帶的拼合,航片之間重合度為x,程序原理是,第i個圖層就要向上移動i*x,第0個圖層移動0,第1個圖層移動x,第2個圖層移動2x,以此類推,注意執(zhí)行環(huán)境的度量單位,我的航片重合度是3.92cm,但是我程序中的換算出的系數(shù)是435,度量單位到底是什么,我真的懵了。
if (documents.length == 0) {
alert("沒有文件可以處理");
} else {
var visibility = false;
var docRef = activeDocument;
var layers = docRef.layers;
if (layers.length == 1 &&docRef.activeLayer.isBackgroundLayer == 1) {
alert("沒有圖層可供處理");
} else {
for (var i = 0; i < layers.length;i++) {
layers[i].translate(0,435*i);
}
}
}
6.
這個程序是基礎(chǔ)框架,在此基礎(chǔ)上,我還編寫了圖層重命名、圖層重排序,倒序拼合重合度等腳本。
第一次編寫腳本就如此匆忙而緊迫,但好歹都編寫出來了,沒有丟面子,六小時之內(nèi),四個腳本。主要比較難搞的是,度量單位的換算,關(guān)鍵執(zhí)行語句的代碼,就像上面的那個代碼里面,移動是translate,但是在Corel里面都是move或者moveto,如果有時間的話,還是熟悉一下Adobe腳本的框架比較有用。
同樣,平時多專研專研,雖然看上去學(xué)了沒有用似的,但是關(guān)鍵時刻,有可能用得上。
希望這個簡單的JAVA腳本教程,對大家有幫助。