加载中…
个人资料
铁血阿郎map
铁血阿郎map
  • 博客等级:
  • 博客积分:0
  • 博客访问:6,726
  • 关注人气:1,970
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Photoshop脚本入门及简单代码

(2014-10-31 19:26:03)
标签:

photoshop

脚本

java

script

航片

分类: 21世纪需要全才

1.photoshop脚本的语言环境是JAVA。

与coreldRAW不同,adobe公司出品的软件,例如photoshop,flash等等,动作和脚本支持的语言环境是JAVA Script,coreldRAW的宏的语言环境是VBA。

JAVA跟C语言比较像,都是面向对象的程序语言,而VBA跟VB差不多,是面向过程的程序语言。

coreldRAW的宏文件gms必须在Microsoft Visual Basic窗口里面才能编辑,但是photoshop的脚本jsx文件,可以在文本文档里面编辑,这点非常具有开拓性,因为不是所有电脑都装有编程软件,但是所有电脑都有文本文档。

我在javascript窗口里面编辑过jsx脚本,也在文本文档里面编辑过,感觉在文本文档里面编程的感觉很奇妙,没有关键词提示,也没有自动纠错,而且,也不是乱码,真的很奇妙。

 

2.如何新建一个photoshop脚本。

因为flash是动作,所以脚本以photoshop为例。

随便在任何位置,新建一个文本文档.txt,后缀名是.txt,把这个后缀名改成.jsx,就是文本文档.jsx,一个空白脚本就建立完了。

3.如何运行一个photoshop脚本。

好像是photoshop cs以上版本才有运行脚本的功能。

Photoshop窗口,文件——脚本——浏览,载入需要运行的脚本文件,就运行了脚本。

 

其实,photoshop的批处理、录制动作等等功能都挺强大的,能满足很大的要求,而编辑脚本,是精益求精,更上一层楼的选择,对工作人员的个人能力要求很高,首先,你需要有一定的编程基础,对JAVA语言有些了解,其次,你需要对于photoshop的一些专有代码有了解,最后,英语最好好一些,因为,最有用的photoshop脚本的帮助文档都是纯英文的,中文的书籍教程资料很少。我英语不好,所以,我看帮助文档和向导,都快看吐了。

 

知识因为分享而更有价值,学习因为交流而更快进步。

 

我在这里分享几个javascript的脚本,希望能帮助到看此文的朋友。

这是我第一次写脚本,因为我有一定的程序基础,coreldRAW的VBA我写得很多,但毕竟语言环境不一样,幸好,我最近在做flash的东西,一些功能原有模块无法实现,必须自己编写程序,所以短期强化了一下JAVA编程语言,没想到竟然赶鸭子上架用上了。

挺巧合的,技多不压身,用上了也好。

因为我也是第一次编写脚本,所以内容也很简单,对于初学者应该有帮助。

 

我先介绍一下我的目的。

假设,我有800张1960年的航片,我需要将这800张航片拼接成一个大图像。

1.

我需要先把这800张航片扫描成电子版,文件格式为tif格式,并把这些航片编号(纸质航片的原编号就可以)。1960年的航片都是纸质照片,只能这么做。

2.

根据航片的编号,确定这些航片涉及几条航带n,每条航带上有多少张航片m;

在photoshop中打开一条航带上的两张相邻航片,量算出航片之间的重合度x(不是百分百,是距离);

然后打开两条相邻航带上两张相邻航片,量算出航带之间的重合度y(不是百分百,是距离)。

3.

打开photoshop,文件——自动——联系表,根据航带和航片的数量,还有航片的尺寸,确定宽度、高度、列数、行数,根据航向确定位置,生成联系表文件,注意不要勾选“拼合所有图层”,拼完的文件会是一个分图层的psd文件。

这是Photoshop拼影像的方法,因为老航片都是扫描的,没有电子文件,也不带坐标,所以这么拼接,但如果是新的航片,带坐标文件的,一般都用erdas拼图就可以了。

注意Photoshop的拼图功能,此处不赘述了。

4.

Photoshop联系表的间距不能有负数,但是航片有重合度,必须是要有负数的。

关于这点,除了JAVA之外,还可以录制动作批处理,可以先录制裁切的动作,把每张航片的重复内容裁切掉,在联系表里面以0间距来拼合图像。

这是一种方法,我这里介绍JAVA脚本。

联系表拼合完之后,可以看到生成psd文件,每张航片是一层,图层名就是航片的名称,录制动作批处理也能实现目的,只不过比较麻烦而已。

5.脚本代码,有些东西三言两语解释不清,自己看程序代码吧。

以下代码是一条纵向航带的拼合,航片之间重合度为x,程序原理是,第i个图层就要向上移动i*x,第0个图层移动0,第1个图层移动x,第2个图层移动2x,以此类推,注意执行环境的度量单位,我的航片重合度是3.92cm,但是我程序中的换算出的系数是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.

这个程序是基础框架,在此基础上,我还编写了图层重命名、图层重排序,倒序拼合重合度等脚本。

第一次编写脚本就如此匆忙而紧迫,但好歹都编写出来了,没有丢面子,六小时之内,四个脚本。主要比较难搞的是,度量单位的换算,关键执行语句的代码,就像上面的那个代码里面,移动是translate,但是在Corel里面都是move或者move to,如果有时间的话,还是熟悉一下Adobe脚本的框架比较有用。

同样,平时多专研专研,虽然看上去学了没有用似的,但是关键时刻,有可能用得上。

希望这个简单的JAVA脚本教程,对大家有帮助。

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有