2014-10-03 1 views
0

Мне нужно сгруппировать несколько изображений в один файл фотошопа и попытаться найти более оптимизированный путь. Я знаю, что могу использовать applescript, чтобы сделать что-то вроде этого.Размещение изображения в текущем открытом документе Photoshop (applescript)

tell application id "com.adobe.Photoshop" 
    activate 
    open file (CurrentImg) 
    duplicate layer 1 of current document to end of NewDocRef 
end tell 
-- CurrentImg is some file path and NewDocRef is a path to some other open document 

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

ответ

2

Я написал его в ExtendScript. Проверено на Osx Photoshop 2014 CC

// based on this stackoverflow 
// http://stackoverflow.com/a/2780624/1770432 

var main = function(arguments, body) { 
    if (app.documents.length < 1) { 
    // abort no file to place imports in 
    return; 
    } 
    // filter does not work on OSX 
    var files = File.openDialog("Select your files to place", "*.*", true); 
    if (files.length < 1 || files === null) { 
    // abort 
    // nothing selected or canceld 
    return; 
    } else { 
    // got something 
    var doc = app.activeDocument; 
    // loop all files 
    for (var i = 0; i < files.length; i++) { 
     // we use a try catch to sort out files Photoshop cant handle 
     try { 
     var curr_file = app.open(files[i]); // one of them 
     curr_file.selection.selectAll(); 
     curr_file.selection.copy(); 
     curr_file.close(SaveOptions.DONOTSAVECHANGES); 
     doc.paste(); 
     } catch (e) { 
     // need to skip files Photoshop can't open 
     // could also be done via a file filter 
     continue; 
     } 

    } 

    } 
} 

main(); 
+0

Похоже, это делает то, что я могу сделать в applescript. Старался выяснить, не могу ли я открыть второй файл. –

+0

Я думаю, что возможность связывать/размещать смарт-объект не подвергается скриптовому API. – fabianmoronzirfas

0

Я искал то же самое. Открытие всех файлов, выбор и копирование содержимого содержимого - не очень хороший визуальный опыт для конечного пользователя.

Используя Photoshop Scriptlistener plugin, вы можете прослушивать действия и выписывать их для вас в javascript. Затем вы можете воспроизвести или изменить их для удобства.

Это (кроме первой строки) то, что я захватил с слушателем. Он запрашивает ввод файла и помещает его в текущий открытый документ. Вы можете легко изменить это в своей ситуации, используя приведенный здесь код @fabiantheblind.

var sourceFile= File.openDialog('pick an image'); 
var idPlc = charIDToTypeID("Plc "); 
var desc3 = new ActionDescriptor(); 
var idnull = charIDToTypeID("null"); 
desc3.putPath(idnull, sourceFile); 
var idFTcs = charIDToTypeID("FTcs"); 
var idQCSt = charIDToTypeID("QCSt"); 
var idQcsa = charIDToTypeID("Qcsa"); 
desc3.putEnumerated(idFTcs, idQCSt, idQcsa); 
executeAction(idPlc, desc3, DialogModes.NO); 

Вы можете вставить это в инструментарий extendscript и увидеть, что он работает. У меня он работает в CC, не тестировал его для cc2014.

+0

В Photoshop на OSX при попытке разместить eps-файл этот код генерирует ошибку: не удалось прочитать код постскриптума – rndm

+0

Вы должны установить сценарий-сценарист и поместить eps в свой документ, а затем использовать код, записанный сценаристом. Theberrornis, вероятно, потому, что для размещения eps вам нужно растрировать его, и вы не предоставляете никаких параметров. – user3319803