虽然说一直想学ps,但一直没怎么学得好,练习不够,毅力不够。。。最近突然发现了一个玩ps的新姿势,以前一直不知道Photoshop还可以用程序员的姿势来玩,于是趁着有兴趣的时候玩了玩,发现好像还不错额,忍不住想记录一下。
什么才是程序员的姿势呢?那就是写脚本。不错,ps也能通过写脚本的方式来进行p图,而且还是JavaScript。接下来就来看看怎么做吧-。
ps的脚本可以用JavaScript写,也就意味着能写JavaScript的工具都能用来写ps的脚本,官方提供的是ExtendScript IDE,不过,因为我没有安装,为了便利,这里就用的是Sublime Text,其实记事本也可以哦,只不过它的颜值实在不高罢了。
那么先来看看ps脚本的基本概念吧。
首先,ps脚本是ps中最为强大的功能,可以完成大量的重复性劳动或者制作非常复杂的特殊效果等。
ps脚本的语法其实也还是比较简单的,代码量比较少就可以完成一些任务,比如说下面一句:
app.activeDocument.close()
就从语义上也比较好理解,其中的app就代表着photoshop,这句话就意味着将Photoshop的当前文档关闭了,看起来蛮简单的。很多都是直译:
// 将当前文档的当前图层的透明度设置为10
app.activeDocument.activeLayer.alpha = 10
// 将当前文档的当前选区执行羽化命令,羽化值为10
app.activeDocument.selection.feather(10)
由于ps脚本的操作还是蛮多的,基本上能用手操作的都能做。这里就看看在图像处理中的一点应用就是了-。
比如说修改亮度和对比度,新建一个jsx文件,写下如下代码:
// 获取到当前层
var layer = app.activeDocument.activeLayer;
// 定义一个变量,表示亮度
var brightness = 30;
// 定义一个变量,表示对比度
var contrast = 30;
layer.adjustBrightnessContrast(brightness,contrast);
然后保存到一个地方。接着打开ps,拽进一张图片:
接着就是点击文件--->脚本---->浏览,找到刚才写的文件:
然后点击打开。我的是mac,在windows上也一样。这时候就会发现,照片果然发生了变化,证明脚本执行了:
为了快速调出浏览脚本页面,我们还可以为其设置快捷键。
首先点编辑---->键盘快捷键:
接着点击文件左侧三角形展开:
滚动到下面,选择里面的浏览右边:
这里就可以输入快捷键了,按个人的喜好输入吧。输入后,点击右边的接受,然后确定就是了。接下来就可以按自己设置的快捷键弄出浏览菜单了。
这样子,也就可以比较快速的执行脚本了。再来看几组图像处理的脚本。
使用自动对比度:
var layer = app.activeDocument.activeLayer;
layer.autoContrast();
保存后,接着按上面设置的快捷键,然后和上面一样执行脚本就能看到效果了。
使用曲线:
var layer = app.activeDocument.activeLayer;
// 表示曲线上三个点的坐标,每组第一个值表示输入值,第二个值表示输出值
var curveShape = [[30,2],[85,100],[255,255]];
layer.adjustCurves(curveShape);
使用高斯模糊滤镜
var layer = app.activeDocument.activeLayer;
var radius = 2.5;
layer.applyGaussianBlur(radius); //高斯模糊效果,其他滤镜也是apply开头的方法
这时候,点击脚本就可以添加指定的高斯模糊效果了。
太多了,上面就随便写了点,基本上所有的功能都能通过代码操作,感兴趣可以下载文档来看看,http://www.adobe.com/devnet/photoshop/scripting.html ,除了JavaScript还可以用AppleScript和VBScript。
等我操作一会儿后就发现,嗯,还是直接在ps上操作方便。。
不过用脚本本来定义的就是代替那种大量重复性劳动的工作,因此,用来批量处理一些东西还是不错的,比如说给图片批量添加水印,如下:
// 弹出文件夹选择窗口
var inputFolder = Folder.selectDialog("请选择图片所在的文件夹:");
if(inputFolder != null){
// 获得文件夹下所有文件
var fileList = inputFolder.getFiles();
for(var i=0;i < fileList.length;i++){
if(fileList[i] instanceof File && fileList[i].hidden == false){
var docRef = open(fileList[i]);
var layerRef = docRef.artLayers.add();
layerRef.kind = LayerKind.TEXT; //设置新建图层为文本类型
layerRef.textItem.contents = "CopyRight @nobody"; // 设置版权信息文本
layerRef.textItem.size = docRef.width/30; //根据当前图片宽度,大致计算出文字大小
var color = new RGBColor();
color.red = 255;
color.green = 255;
color.blue = 255;
var sc = new SolidColor();
sc.rgb = color;
layerRef.textItem.color = sc;
layerRef.fillOpacity = 50; //设置透明度为半透明
layerRef.translate(0,docRef.height/2-72);
layerRef.merge(); //合并
docRef.save(); //保存文档
docRef.close();
}
}
}
保存之后,将需要添加水印的图片放在一个文件夹下,然后在ps中使用快捷键执行脚本,看看运行情况:
然后看看执行结果:
果然添加了水印。
以程序员的姿势来玩PS就是这样玩的,哈哈,当然要处理一些照片或设计啥的,当然还是直接使用PS要方便。至于这东西嘛,感觉拿来装装逼还是不错的。。其实有些时候还是有比较方便的地方嘛。