Javascript Photoshop脚本处理无序图像
我通过Photoshop的脚本工具/选项运行javascript,以便批量处理一个文件夹中的图像。该脚本将第二个图像层从文件夹02中的单个图像添加到文件夹01中的多个图像。这很好,但是,我正在尝试降低添加的层的不透明度,以便从文件夹02添加的图像对于从文件夹01处理的每个后续图像都越来越透明。我基本上是创建一个淡入淡出,从文件夹02中的图像过渡到显示文件夹01中处理的图像。不透明度变化按预期进行(减少每个处理图像的不透明度);然而,它们似乎被处理得杂乱无章,所以当我按顺序查看图像时,添加的层的不透明度会跳来跳去。我还可以看到,当新处理的图像保存到“已处理图像”文件夹时,它们会无序到达(类似于1、3、2、5、6、4;尽管每次都可能不同)。我怀疑我需要强制我的代码按顺序一次处理一个图像,但我不知道该怎么做。提前谢谢!我不认为文件命名是个问题,因为我已经尝试将文件夹01中的图像命名为1、2、3(等等)以及01、02、03。但那没用 提前谢谢Javascript Photoshop脚本处理无序图像,javascript,photoshop,photoshop-script,decrement,Javascript,Photoshop,Photoshop Script,Decrement,我通过Photoshop的脚本工具/选项运行javascript,以便批量处理一个文件夹中的图像。该脚本将第二个图像层从文件夹02中的单个图像添加到文件夹01中的多个图像。这很好,但是,我正在尝试降低添加的层的不透明度,以便从文件夹02添加的图像对于从文件夹01处理的每个后续图像都越来越透明。我基本上是创建一个淡入淡出,从文件夹02中的图像过渡到显示文件夹01中处理的图像。不透明度变化按预期进行(减少每个处理图像的不透明度);然而,它们似乎被处理得杂乱无章,所以当我按顺序查看图像时,添加的层的不
#target photoshop
// FOLDERS
var folder1 = new Folder('~/Desktop/1/');
var folder2 = new Folder('~/Desktop/2/');
var saveFolder = new Folder('~/Desktop/done/');
//
var searchMask = '*.???'; // get files named as this
var list1 = folder1.getFiles(searchMask);
var list2 = folder2.getFiles(searchMask);
var psdOptions = new PhotoshopSaveOptions();
psdOptions.layers = true;
opacityLevel = 100;
for (var i = 0; i < list1.length; i++) {
var doc = open(list1[i]);
var docName = doc.name;
placeFile('~/Desktop/2/1.jpg', 100); // for adding only one file each source file
doc.activeLayer.blendMode = BlendMode.LIGHTEN; // @@ change BLEND MODE
placeFile('~/Desktop/2/2.png', 100); // for adding only one file each source file
doc.activeLayer.blendMode = BlendMode.MULTIPLY; // @@ change BLEND MODE
doc.activeLayer.opacity = opacityLevel; // set layer opacity
// Decrement opacity level for each image
if (doc.activeLayer.opacity > 5) {
opacityLevel = Math.round(doc.activeLayer.opacity) - 5;
}
// SAVING
doc.saveAs(new File(saveFolder + '/' + docName.split('.')[0] + '.psd'), psdOptions);
doc.close(SaveOptions.DONOTSAVECHANGES);
};
function placeFile(file, scale) {
try {
var idPlc = charIDToTypeID("Plc ");
var desc2 = new ActionDescriptor();
var idnull = charIDToTypeID("null");
desc2.putPath(idnull, new File(file));
var idFTcs = charIDToTypeID("FTcs");
var idQCSt = charIDToTypeID("QCSt");
var idQcsa = charIDToTypeID("Qcsa");
desc2.putEnumerated(idFTcs, idQCSt, idQcsa);
var idOfst = charIDToTypeID("Ofst");
var desc3 = new ActionDescriptor();
var idHrzn = charIDToTypeID("Hrzn");
var idPxl = charIDToTypeID("#Pxl");
desc3.putUnitDouble(idHrzn, idPxl, 0.000000);
var idVrtc = charIDToTypeID("Vrtc");
var idPxl = charIDToTypeID("#Pxl");
desc3.putUnitDouble(idVrtc, idPxl, 0.000000);
var idOfst = charIDToTypeID("Ofst");
desc2.putObject(idOfst, idOfst, desc3);
var idWdth = charIDToTypeID("Wdth");
var idPrc = charIDToTypeID("#Prc");
desc2.putUnitDouble(idWdth, idPrc, scale);
var idHght = charIDToTypeID("Hght");
var idPrc = charIDToTypeID("#Prc");
desc2.putUnitDouble(idHght, idPrc, scale);
var idAntA = charIDToTypeID("AntA");
desc2.putBoolean(idAntA, true);
executeAction(idPlc, desc2, DialogModes.NO);
}
catch (e) { }
}//end function placeFile
#目标photoshop
//文件夹
var folder1=新文件夹(“~/Desktop/1/”);
var folder2=新文件夹(“~/Desktop/2/”);
var saveFolder=新文件夹(“~/Desktop/done/”);
//
var searchMask='*.???';//获取名为this的文件
var list1=folder1.getFiles(searchMask);
var list2=folder2.getFiles(searchMask);
var psdOptions=新的PhotoshopSaveOptions();
psdOptions.layers=true;
不透明层=100;
对于(变量i=0;i5){
opacityLevel=Math.round(doc.activeLayer.opacity)-5;
}
//拯救
doc.saveAs(新文件(saveFolder+'/'+docName.split('.')[0]+'.psd'),psdOptions);
单据关闭(SaveOptions.DONOTSAVECHANGES);
};
函数placeFile(文件、比例){
试一试{
var idPlc=charIDToTypeID(“Plc”);
var desc2=新的ActionDescriptor();
var idnull=charIDToTypeID(“null”);
desc2.putPath(idnull,新文件(File));
var idFTcs=charIDToTypeID(“FTcs”);
var idQCSt=charIDToTypeID(“QCSt”);
变量idQcsa=charIDToTypeID(“Qcsa”);
描述2.已枚举(IDFTC、idQCSt、idQcsa);
var idOfst=charIDToTypeID(“Ofst”);
var desc3=新的ActionDescriptor();
var idHrzn=charIDToTypeID(“Hrzn”);
var idPxl=charIDToTypeID(#Pxl”);
描述3.putUnitDouble(idHrzn,idPxl,0.000000);
var idVrtc=charIDToTypeID(“Vrtc”);
var idPxl=charIDToTypeID(#Pxl”);
描述3.putUnitDouble(idVrtc,idPxl,0.000000);
var idOfst=charIDToTypeID(“Ofst”);
desc2.putObject(idOfst,idOfst,desc3);
var idWdth=charIDToTypeID(“Wdth”);
var idPrc=charIDToTypeID(“Prc”);
说明2.putUnitDouble(idWdth、idPrc、刻度);
var idHght=charIDToTypeID(“Hght”);
var idPrc=charIDToTypeID(“Prc”);
说明2.putUnitDouble(idHght、idPrc、刻度);
var idAntA=charIDToTypeID(“AntA”);
描述2.布尔值(idAntA,true);
执行(idPlc、desc2、DialogModes.NO);
}
捕获(e){}
}//结束函数placeFile
永远不要指望文件列表函数来维护逻辑顺序
创建文件列表后,尝试对其进行排序
var list1 = folder1.getFiles(searchMask);
var list2 = folder2.getFiles(searchMask);
list1.sort();
list2.sort();
确保文件名按顺序排序。如果您使用数字,请进行零修复
或者,您可以为
Array.sort()
提供排序功能,以允许自定义排序。请阅读更多有关其工作原理的信息。这是一个奇妙而简单的解决方案!非常感谢。