Extenndscript с Photoshop: импорт изображения - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь выбрать некоторые файлы изображений с помощью приглашения, а затем добавить эти файлы в активный документ.Вот что у меня есть:

#target photoshop

doc = app.activeDocument;

// choose image files
var files = File.openDialog(undefined,undefined,true);

// for each image, add to new layer and insert into doc
for (var file in files) {
    var layer = doc.artLayers.add();
    layer.image = file; // this doesn't work.
}

1 Ответ

0 голосов
/ 16 октября 2018

Что такое layer.image?ArtLayer не имеет этого свойства.Возможно, в вашем случае размещение будет работать лучше:

doc = app.activeDocument;

// choose image files
var files = File.openDialog(undefined, undefined, true);

// for each image, add to new layer and insert into doc
for (var i = 0; i < files.length; i++)
{
    var layer = placeImage(files[i]);
}

function placeImage(imageFile)
{
    var desc554 = new ActionDescriptor();
    desc554.putPath(cTID('null'), imageFile);
    desc554.putEnumerated(cTID('FTcs'), cTID('QCSt'), cTID('Qcsa'));
    var desc555 = new ActionDescriptor();
    desc555.putUnitDouble(cTID('Hrzn'), cTID('#Pxl'), 0.000000);
    desc555.putUnitDouble(cTID('Vrtc'), cTID('#Pxl'), 0.000000);
    desc554.putObject(cTID('Ofst'), cTID('Ofst'), desc555);
    executeAction(cTID('Plc '), desc554, DialogModes.NO);

    return activeDocument.activeLayer
};

function cTID(s)
{
    return app.charIDToTypeID(s);
};

function sTID(s)
{
    return app.stringIDToTypeID(s);
};

Также Photoshop не нравится, когда в массиве используются циклы for...in (иногда это работает, иногда нет: в случае Fileобъект не работает)

...