常用功能小集合
// 获取当前图层
var originalStem = app.activeDocument.activeLayer;
// 从用户获得输入
var stemsAmount = prompt("Processing \"" + originalStem.name + "\"\nHow many stems do you need? (From 2 to 100)", 12);
常用小案例:
将一个文件夹内的所有图片合并起来,生成一个pdf文档
var input = new Folder("C:/Users/CNX/Desktop/liuji/study/Script/PS Script/jpg1");
var data = input.getFiles("*.jpg");
/*
for(var index in data){
var path = data[index];
$.writeln(path);
}
*/
var output = new File ("C:/Users/CNX/Desktop/liuji/study/Script/PS Script/jpg1/out/test.pdf");
app.makePDFPresentation(data, output);
alert("PDF制作完成", "我是一个提醒框", false);
批量裁剪表情包
var input = new Folder("C:/Users/CNX/Desktop/liuji/study/Script/PS Script/jpg1");
var data = input.getFiles("*.jpg");
// $.writeln (typeof data);
for(var i = 0; i < data.length; i++)
{
open(data[i]);
//定义一个变量[document],用来表示Photoshop的当前文档。
var document = app.activeDocument;
//定义一个变量[bounds],用来表示文档需要裁切的区域,即裁切从坐标[0,0]至[140,104]的区域。
//注意Photoshop坐标原点在左上角。
var bounds = [0, 266, 300, 322];
//定义一个变量[angle],用来设置裁切的旋转角度为0。
var angle = 0;
//调用[document]对象的[crop]方法,来裁切当前文档。
document.crop(bounds, angle);
//定义一个变量[document],用来表示Photoshop当前的活动文档。
var document = app.activeDocument;
//定义一个变量[fileOut],用来指定文件保存的路径。
var fileOut = new File("C:/Users/CNX/Desktop/liuji/study/Script/PS Script/jpg1/out");
//定义一个变量[options],用来指定图片保存的格式为PNG。
var options = PNGSaveOptions;
//定义一个变量[asCopy],用来指定图片以副本的方式保存。
var asCopy = true;
//定义一个变量[extensionType],用来指定图片名称的后缀为小写的.png。
var extensionType = Extension.LOWERCASE;
//使用[document]对象的[saveAs]方法保存当前图片。
document.saveAs(fileOut, options, asCopy, extensionType);
}
改变指定图层的可见性
// Macintosh Finder or the Windows Explorer
#target photoshop
// 使Photoshop成为最前端的应用程序
app.bringToFront();
// 获取当前文档
var srcDoc = app.activeDocument;
changeLayerVisible("aa");
function findThisLayer(aLayerName)
{
try
{
//try to find the layer
return srcDoc.layers.getByName(aLayerName);
}
catch(ee)
{
;//do nothing
}
}
function changeLayerVisible(aLayerName)
{
try
{
findThisLayer(aLayerName).visible = !(findThisLayer(aLayerName).visible);
}
catch(ee)
{
alert("Layer :'" + aLayerName + "' Not found!");
}
}
将该图层放入一个图层组里,根据用户输入复制并旋转图层(需要设置混合模式)
// 保存当前图层到变量originalStem中
var originalStem = app.activeDocument.activeLayer;
// 要求用户输入需要将该图像旋转多少次,系统会自动根据旋转的个数来计算每次旋转的角度
var stemsAmount = prompt("Processing \"" + originalStem.name + "\"\nHow many stems do you need? (From 2 to 100)", 12);
// 检查用户输入的数字是否是有效数字,如果不正确,展示错误信息,要求用户重新输入
while(isNaN(stemsAmount) || stemsAmount <= 0 || stemsAmount > 100){
// 如果用户点击取消,那么退出循环
if(stemAmount == null) break;
// 展示错误信息
alert("Please enter number in range from 2 to 100");
// 要求再次输入
stemsAmount = prompt("Processing \"" + originalStem.name + "\"\nHow many stems do you need? (From 2 to 100)", 12);
};
// 运行这个复制的过程
if(stemsAmount != null){
// 计算旋转的角度
var angle = 360 / parseInt(stemsAmount);
// 创建一个图层组
var stemsGroup = app.activeDocument.layerSets.add();
stemsGroup.name = originalStem.name = " ("+stemsAmount + " stems)";
// 把最开始的那个图层也放入图层组里
originalStem.move(stemsGroup, ElementPlacement.INSIDE);
// 复制并且旋转图层组里的图层
for(var i = 1; i < stemsAmount; i++){
// 复制最初的图层,并且将其保存为一个变量 newStem
var newStem = originalStem.duplicate();
// 旋转新图层
newStem.rotate(angle * i, AnchorPosition.MIDDLECENTER);
// 给新图层添加索引
newStem.name = originalStem.name + " " + (i + 1);
// 把新图层放入图层组里
newStem.move(stemsGroup, ElementPlacement.PLACEATEND);
};
// 给最初的图层也添加一个索引1
originalStem.name += " 1)";
};
将一个文档里的每一个图层都单独保存为png文件
/*
ps编程参考
https://www.adobe.com/content/dam/acom/en/devnet/photoshop/pdfs/photoshop-cc-javascript-ref-2019.pdf
ps编程指导
https://www.adobe.com/content/dam/acom/en/devnet/photoshop/pdfs/photoshop-cc-scripting-guide-2019.pdf
我是gumou
*/
///Help Functions///
function GetArtLayers (doc, allLayers){
for (var m = 0; m < doc.layers.length; m++){
var theLayer = doc.layers[m];
if (theLayer.typename === "ArtLayer"){
allLayers.push(theLayer);
}else{
GetArtLayers(theLayer, allLayers);
}
}
return allLayers;
}
function printLayersName(layerss){
var text = "";
for(var i = 0; i < layerss.length; i++){
var layer = layerss[i];
text = text + layer.name + "\n";
}
alert(text);
}
//
var doc = app.activeDocument;
var layers = [];
layers = GetArtLayers(doc,layers);
/
var prefix = "prefix_"; //在这里修改导出文件的前缀,单词文件名为 前缀+图层名
var folderpath = doc.path + "/"; //在这里修改导出的位置,默认为psd文件所在位置
/
var vlayers = [];
//保存所有可见的类,并隐藏
for(var i = 0; i < layers.length; i++){
var layer = layers[i];
if (layer.visible == true) {
vlayers.push(layer);
layer.visible = false;
}
}
for(var i = 0; i < layers.length; i++){
var layer = layers[i];
//如果图层不是 allLocked状态,导出
if (!layer.allLocked) {
layer.visible = true;
//保存
var filename = prefix + layer.name;
var file = new File(folderpath + filename+ ".png");
var saveOptions = new PNGSaveOptions();
doc.saveAs(file, saveOptions, true, Extension.NONE);
//隐藏
layer.visible = false;
}
}
//printLayersName(vlayers)
for(var i = 0; i < vlayers.length; i++){
var layer = vlayers[i];
layer.visible = true;
}
①:Hello World
// 记住当前单位设置,然后将单位设置该脚本所指定的值
var originalUnit = preferences.rulerUnits
preferences.rulerUnits = Units.INCHES
// 创建一个新的2x4英寸文档并将其分配给变量
var docRef = app.documents.add( 2, 4 )
// 创建一个包含文字的新艺术层
var artLayerRef = docRef.artLayers.add()
artLayerRef.kind = LayerKind.TEXT
// 设置文本层的内容
var textItemRef = artLayerRef.textItem
textItemRef.contents = "大家好,我是大吉哥"
// 发布参考
docRef = null
artLayerRef = null
textItemRef = null
// 恢复原始标尺单位设置
app.preferences.rulerUnits = originalUnit
②: 三种弹框以及在控制台打印
$.writeln("我是第一个hello world");
$.write ("hello world");
// 这是第一种弹框
// alert ("Hello 我是一个警告框", "警告框的标题", false);
// 这是第二个弹框
// 第二个参数如果是false,默认选择yes,如果是true,默认选择no
// var a = confirm ("这是一个确认框", false, "这里是确认框的标题");
// $.writeln("你选择了:" + a);
// 确认框更多的时候会这样用
/*
if(a == true){
$.writeln("用户选择了:" + a);
}else if(a == false) {
$.writeln("用户选择了:" + a);
}
*/
// 这是第三个弹框
var b = prompt ("这是一个提示输入框", "我是提示输入框中的默认值哦", "这是提示输入框的标题");
$.writeln(b);
③:在一个新的工作文档中新建一个画布
var newDoc = app.documents.add();
④: 打开一张图片
open(File("C:/Users/CNX/Desktop/liuji/study/PS/0358.gif_wh300.gif"));
⑤:打开打开文件对话框
open(File(openDialog()));
⑥:将该图层旋转一定角度之后,复制一份新图层
// 保存选中的图层到变量originalStem
var originalStem = app.activeDocument.activeLayer;
// 通过显示提示框要求用户输入并将输入的值保存到变量
var stemsAmount = prompt("Processing \"" + originalStem.name + "\"\nHow many stems do you need?", 12);
// 计算旋转的角度
var angle = 360 / stemsAmount;
//复制并且旋转图层
for(var i = 1; i < stemsAmount; i++){
// 复制原始图层并将其保存到变量中newStem中
var newStem = originalStem.duplicate();
// 旋转新图层
newStem.rotate(angle * i, AnchorPosition.BOTTOMCENTER);
};
⑦:通过构造器创建对象
function Person(name){
this.name = name;
this.play = function(param){
$.writeln(param);
}
}
var a = new Person("小明");
$.writeln(a.name);
a.play("打篮球");
9:新建一个200*200的文档,并在背景图层上方新建一个同等大小的透明图层
preferences.rulerUnits = Units.PIXELS;
var docRef = app.documents.add(200, 200);
var layer = docRef.artLayers.add();
layer.name = 'footer';
10:PS执行播放提示音效命令
app.beep();
11:关闭当前文档
app.activeDocument.close();
12: 当前文档的当前选区的羽化值设定为10
app.activeDocument.selection.feather(10);
13:当前文档的当前图层的透明度设置为50
app.activeDocument.activeLayer.alpha = 50;
14:在弹框中显示当前应用名称以及该应用的版本信息
var message