admin管理员组

文章数量:1544264

常用功能小集合

// 获取当前图层
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/content/dam/acom/en/devnet/photoshop/pdfs/photoshop-cc-javascript-ref-2019.pdf

ps编程指导
​https://www.adobe/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 

本文标签: 脚本案例ps