SongLogos

常用功能小集合

// 获取当前图层
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.length; i++){
    var layer 

分类:

技术点:

相关文章:

  • 2021-07-30
  • 2021-06-14
猜你喜欢
  • 2021-11-07
  • 2021-04-01
  • 2021-12-03
  • 2021-11-24
  • 2021-11-26
  • 2021-06-17
  • 2021-09-07
相关资源
相似解决方案