Существует плагин 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 ), но он выполняет свою работу, и вы можете увидеть строки, которые нужно заменить, чтобы поместить функцию make, которая поместит файл в документ.
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
}