常用功能小集合
// 获取当前图层 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);
批量裁剪表情包
va
r 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