构建一个Photoshop脚本到一个文本层添加到批处理照片

问题描述 投票:0回答:1

注:我的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重复

from this to this - goal

这里是我做了什么:

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语句。

我很欣赏的任何解决方案,协助和你的帮助。 谢谢。

尤里

javascript javascript-objects photoshop photoshop-script
1个回答
0
投票

有一个的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
}
© www.soinside.com 2019 - 2024. All rights reserved.