PS脚本篇--1.代码是什么,写代码⼲嘛?
最近挺迷茫,总感觉⾼不成低不就的,看源码或书的时候有些焦躁,好吧,也许⼜到瓶颈了...
先静⼀静吧,回想⼀开始学编程时,出发点之⼀是:想⽤脚本玩转PhotoShop,久⽽久之竟然忘记了
现在⼀些主流语⾔也都差不多接触了,⾯向对象的理解也挺深的,看到PS时,在想:换个⼼情呗!
环境
脚本语⾔: JavaScript
IDE环境:Idea (随意,记事本也可以)
PS版本:18.0.0
复制代码
⼀、脚本的使⽤
1.HelloWolrd ⾛起
-
--->[Hello.js]-----------------
Alert("Hello World");
复制代码
平方怎么算的2.⾃定义快捷键
⼆、从⾯向对象的⾓度来看PhotoShop
0.对象:app
将整个app看做⼀个对象,它拥有着众多的⽅法和属性,以此可以获取信息和操作图⽚
先来看⼀下app对象中的⼏个对象,找点感觉
app {//整个PS软件对象
name,//软件名称
version,//软件版本
documents:{},//打开的⽂件的信息
fonts:{}//系统字体
recentFiles:{},//所有的打开⽂档对象(数组)
activeDocument:{}//当前激活的⽂档对象
}
复制代码
1.获取名称和版本号+操作提⽰⾳:app.beep()
---->[info.js]-----------------
var msg = app.name + "\r\n 版本:" + app.version;
alert(msg);
app.beep() //执⾏播放提⽰⾳效果:叮咚
复制代码
2.打开的⽂件的信息:app.documents
var docs = app.documents;
var msg = "";
for (var i = 0; i < docs.length; i++) {
msg +=
"名称:" + docs[i].name + "\r\n" +
幼儿教师师德师风演讲稿
"宽/像素:" + docs[i].width + "\r\n" +
"⾼/像素:" + docs[i].height + "\r\n";
}
喝彩作文
alert(msg);
复制代码
3.列出字体:app.fonts
var fonts = app.fonts;
var msg = "";
for (var i = 0; i < fonts.length; i++) {
msg += "序号:" + (i + 1) + " 字体:" + fonts[i].name + "\r\n"; }
alert(msg);
复制代码
4.最近打开的⽂件:Files
var cFiles = Files;
var msg = "";
for (var i = 0; i < cFiles.length; i++) {
msg += (i + 1) + ":" + cFiles[i].name + "\r\n";
}
alert(msg);
复制代码
5.当前激活的⽂档对象:app.activeDocument
var doc = app.activeDocument;
msg = "名称:" + doc.name + "\r\n" +
"宽/像素:" + doc.width + "\r\n" +
"⾼/像素:" + doc.height + "\r\n";
alert(msg);
复制代码
三、⽂件操作相关
1.打开图⽚:"open(File)"
var img = File("J:\\Java\\Android\\TolyGithub\\TolyTest\\toly_test\\src\\main\\res\\mipmap-xxhdpi\\bg_10.jpg"); var ok = confirm("打开图⽚?");
if (ok) {
open(img)
}
复制代码
2.打开⽂件夹下所有图⽚
var imgFolder = File("J:\\Java\\Android\\TolyGithub\\TolyTest\\toly_test\\src\\main\\res\\mipmap-xxhdpi");
var files = Files();
粉水晶手链for (var i = 0; i <files.length; i++) {
var file = files[i];
if (file instanceof File) {
open(file);
中山码头}
}
复制代码
3.拷贝当前⽂档并打开
var doc = app.activeDocument;//当前⽂件对象
doc.duplicate(app.activeDocument.name + "-copy", 1);//拷贝当前⽂档并打开
复制代码
4.⽂件另存为:app.activeDocument.saveAs
var doc = app.activeDocument;//当前⽂件对象
var outPath = new File("G:\\Photo\\龙少.png");
var options = PNGSaveOptions;//保存png模式
var asCopy = true;//副本⽅式保存
var extensionType = Extension.LOWERCASE;//拓展名⼩写
doc.saveAs(outPath, options, asCopy, extensionType);
alert("保存完成")
复制代码
5.压缩并保存图⽚(web)
直接保存的png 有11.1M, web导出的0.3k,虽然效果上有些失⾊,还是很有价值的。
//压缩保存gif
var doc = app.activeDocument;//当前⽂件对象
var path = new File("G:\\Photo\\龙少.gif");
var eop = new ExportOptionsSaveForWeb();//web图⽚导出配置
eop.includeProfile = true;//是否包含内置颜⾊配置⽂件
eop.lossy = 0;//有损压缩程度
田福军原型
eop.formate = SaveDocumentTypePUSERVEGIF;//导出格式FIF
eop.ditherAmount = 0;//像素抖动值
eop.dither = Dither.NOISE;//杂⾊
eop.palette = Palette.LOCALADAPTIVE;//局部(随样性)
rom是什么alert("保存完成:" + path);
//压缩保存jpeg
var doc = app.activeDocument;//当前⽂件对象
var filePath = new File("G:\\Photo\\龙少.jpeg");
var eop = new ExportOptionsSaveForWeb();//web图⽚导出配置
eop.quality = 60;//图⽚质量
alert("保存完成:" + filePath);
//压缩保存png
var doc = app.activeDocument;//当前⽂件对象
var filePath = new File("G:\\Photo\\龙少-compresd.png");
var eop = new ExportOptionsSaveForWeb();//web图⽚导出配置
eop.PNG8 = true;//png 8彩
alert("保存完成:" + filePath);
复制代码
四、⼀些简单操作
1.创建新⽂件
/
/创建新⽂件
var width = 1080;//宽
var height = 1920;//⾼
var resolution=72;//分辨率
var fileName="phone";//名称
var mode = NewDocumentMode.RGB;//⾊彩模式
var fillColor = DocumentFill.TRANSPARENT;//背景填充颜⾊
逆境名言var pixelAspectRatio=1;//像素⽐率
app.documents.add(width, height, resolution, fileName, mode, fillColor, pixelAspectRatio);
复制代码
2.添加⽂字图层
/
/创建⽂字图层
var doc = app.documents.add(500, 200);
var artLayer = doc.artLayers.add();
artLayer.kind = LayerKind.TEXT;
var textItem = Item;//⽂字条⽬
textItem.size = 40;
复制代码
3.获取当前⽂件的所有图层
//获取图层对象
var layers = app.activeDocument.artLayers;
var msg = "";
for (var i = 0; i < layers.length; i++) {
var layer = layers[i];
msg += i + "--图层名称:" + layer.name + "\r\n";
}
alert(msg);
复制代码
4.获取图层尺⼨
var layer = app.activeDocument.activeLayer;//活动图层
alert(layer.bounds);
复制代码
5.当前激活图层:⾊彩平衡
var layer = app.activeDocument.activeLayer;//活动图层
layer.adjustColorBalance([-39,-81,0], [-44,50,-52], [0,0,0], true);//阴影、中间调、⾼光复制代码
6.前景⾊和背景⾊的修改