- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在通过 Photoshop 的脚本工具/选项运行 javascript,以便批处理图像文件夹。该脚本将第二个图像层从文件夹 02 中的单个图像添加到文件夹 01 中的多个图像。这工作正常,但是,我试图减少添加的图层的不透明度,以便添加的图像来自文件夹 02 对于从文件夹 01 处理的每个后续图像越来越透明。我基本上是在创建从文件夹 02 中的图像过渡到显示从文件夹 01 处理的图像的淡入淡出。不透明度变化按预期发生(递减不透明度对于每个处理过的图像);然而,它们似乎被乱序处理,所以当我按顺序查看图像时,添加层的不透明度会跳来跳去。我还可以看到,当新处理的图像保存到已处理图像文件夹时,它们到达时顺序不正确(类似于 1、3、2、5、6、4;尽管每次可能不同)。我怀疑我需要强制我的代码按顺序一次处理一个图像,但我不确定该怎么做。提前致谢!我不认为文件命名是问题,因为我尝试将文件夹 01 中的图像命名为 1、2、3(依此类推)以及 01、02、03。但这无济于事。
提前致谢!
#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
最佳答案
永远不要指望文件列表函数来维护逻辑顺序...
尝试在创建文件列表后对其进行排序。
var list1 = folder1.getFiles(searchMask);
var list2 = folder2.getFiles(searchMask);
list1.sort();
list2.sort();
确保文件名按顺序排序。 Zerofix 如果你使用数字。
或者,您可以为 Array.sort()
提供排序函数以允许自定义排序。阅读更多有关其工作原理的信息 here .
关于javascript - Photoshop 脚本处理乱序图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54390884/
序 大家好呀,我是summo,这次来写写我在上班空闲(摸鱼)的时候做的一个小网站的事。去年阿里云不是推出了个活动嘛,2核2G的云服务器一年只要99块钱,懂行的人应该知道这个价格在业界已经是非常良心了
我尝试根据给定的级别顺序(BFS 顺序)构造 BST。我知道这是可能的,但我不知道我该怎么写。问题是我必须使用 BFS 序列。所以,我不能在这里使用递归,我必须迭代地编写我的程序......我发现这有
我是一名优秀的程序员,十分优秀!