注:我的Photoshop CS6是 我命令创建一个脚本,在一堆照片作品,并添加一个文本为每一张照片。
我有这样的(文本列表例如记事本)中的数据:“标志文件” “型号” “型号”
logo accuride.jpg
acc-899
acc-567
acc-776
logo bocsh.jpg
boc-777
boc-699
boc-563
logo dell.jpg
65777
89992
45663
基本上,我已经想象步骤: 1.找到其中记事本(列表) 2.读取并解析清单。要知道写什么标志和什么 3.注意到关于库中的照片(即标志accuride.jpg) 4.将在活动文档层 5.创建新的文本层,放置在标志的顶部 6.出口为jpg,重命名为型号为同 7.删除所有层或关闭文档 8.从步骤1重复
这里是我做了什么:
var doc = activeDocument
var textFile = new File(Folder.desktop+ '/model-number.txt');
var list = readText (textFile).split('\n');
for (var j = 0; i<list.length; i++) {
if (list[j].some("logo")) { //jika list j contain kata "logo" maka :
var artLayerRef = doc.artLayers.add()
artLayerRef.kind = LayerKind.TEXT;
var textItemRef = artLayerRef.textItem;
textItemRef.contents = list[i]
}
}
function readText(file){
if (textFile.exists) {
textFile.encoding = "ANSI";
textFile.lineFeed = "unix";
textFile.open("r", "TEXT", "????");
var str = textFile.read();
textFile.close();
return str;
}
}
而事实是,我非常新手用这个js,特别是对Photoshop的脚本。通常我创建一个VBA脚本来支持我的拼贴。 我花了超过2仅跟小时推测如何导入图像到活动文档层和仍然没有运气。 我还设想使用VBA来调用的Photoshop应用。因此,从数据表上我的工作簿来了。但现在,只能将图像导入让我头晕目眩。
我忘了问 : 1.如何将图像导入活动文档的层? 2.如何在JS字符串数组检查子?就像当我发现字“标识*”然后做if语句。
我很欣赏的任何解决方案,协助和你的帮助。 谢谢。
尤里
有一个的Photoshop插件叫做ScriptListener,安装后,Photoshop将开始写你最要做的动作在Photoshop中的操作管理器JavaScript代码。这就是找到代码的东西,你不能在脚本参考查找PDF的方式之一。例如,要导入图像,你可以做File > Place Embedded
,载入选择,以确定其边框,作物这种选择和取消。这些行动将让你在这个ScriptingListenerJS.log代码在桌面上:
// =======================================================
var idPlc = charIDToTypeID( "Plc " );
var desc7 = new ActionDescriptor();
var idIdnt = charIDToTypeID( "Idnt" );
desc7.putInteger( idIdnt, 12 );
var idnull = charIDToTypeID( "null" );
desc7.putPath( idnull, new File( "/C/Users/Sergey Kritskiy/Desktop/temp/triangles.png" ) );
var idFTcs = charIDToTypeID( "FTcs" );
var idQCSt = charIDToTypeID( "QCSt" );
var idQcsa = charIDToTypeID( "Qcsa" );
desc7.putEnumerated( idFTcs, idQCSt, idQcsa );
var idOfst = charIDToTypeID( "Ofst" );
var desc8 = new ActionDescriptor();
var idHrzn = charIDToTypeID( "Hrzn" );
var idPxl = charIDToTypeID( "#Pxl" );
desc8.putUnitDouble( idHrzn, idPxl, 0.000000 );
var idVrtc = charIDToTypeID( "Vrtc" );
var idPxl = charIDToTypeID( "#Pxl" );
desc8.putUnitDouble( idVrtc, idPxl, 0.000000 );
var idOfst = charIDToTypeID( "Ofst" );
desc7.putObject( idOfst, idOfst, desc8 );
executeAction( idPlc, desc7, DialogModes.NO );
// =======================================================
var idsetd = charIDToTypeID( "setd" );
var desc9 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref1 = new ActionReference();
var idChnl = charIDToTypeID( "Chnl" );
var idfsel = charIDToTypeID( "fsel" );
ref1.putProperty( idChnl, idfsel );
desc9.putReference( idnull, ref1 );
var idT = charIDToTypeID( "T " );
var ref2 = new ActionReference();
var idChnl = charIDToTypeID( "Chnl" );
var idChnl = charIDToTypeID( "Chnl" );
var idTrsp = charIDToTypeID( "Trsp" );
ref2.putEnumerated( idChnl, idChnl, idTrsp );
desc9.putReference( idT, ref2 );
executeAction( idsetd, desc9, DialogModes.NO );
// =======================================================
var idCrop = charIDToTypeID( "Crop" );
var desc11 = new ActionDescriptor();
var idDlt = charIDToTypeID( "Dlt " );
desc11.putBoolean( idDlt, true );
executeAction( idCrop, desc11, DialogModes.NO );
// =======================================================
var idsetd = charIDToTypeID( "setd" );
var desc13 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref3 = new ActionReference();
var idChnl = charIDToTypeID( "Chnl" );
var idfsel = charIDToTypeID( "fsel" );
ref3.putProperty( idChnl, idfsel );
desc13.putReference( idnull, ref3 );
var idT = charIDToTypeID( "T " );
var idOrdn = charIDToTypeID( "Ordn" );
var idNone = charIDToTypeID( "None" );
desc13.putEnumerated( idT, idOrdn, idNone );
executeAction( idsetd, desc13, DialogModes.NO );
这是相当难以阅读,这儿有工具可以帮助美化它一点点(如在SLCFix.js
xbytor's xtools),但它的工作,你可以看到你需要更换投入使功能就会将一个字符串提交文件内。
2)你的字符串和标识,我想有这样做是不同的方式,我会做这样的:
var list = readText(textFile).split('\n'),
curLogo = "",
logos = {};
for (var i = 0; i < list.length; i++)
{
var curLine = list[i].match(/logo.*\.jpg/);
if (curLine != null)
{
curLogo = list[i];
logos[curLogo] = [];
}
else
{
logos[curLogo].push(list[i])
}
}
这会给你一个对象这样您可以在以后使用
// {
// "logo accuride.jpg": [
// "acc-899",
// "acc-567",
// "acc-776"
// ],
// "logo bocsh.jpg": [
// "boc-777",
// "boc-699",
// "boc-563"
// ],
// "logo dell.jpg": [
// "65777",
// "89992",
// "45663"
// ]
// }
for (var logo in logos)
{
$.writeln(logo) // logo accuride.jpg
$.writeln(logos[logo].length) // 3
}