2013-10-15 2 views
1

У меня есть один файл фотошопа и 200 файлов изображений (png). Используя фотошоп в качестве шаблона, мне нужно сгенерировать 200 новых изображений, где каждое изображение является результатом другого png, размещенного в шаблоне фотошопа.Photoshop Scripting: Замените образ

В принципе, заменяя изображение слоя внутри фотошопа внешним файлом png, у меня есть.

Это что-то, что можно сделать автоматически с помощью сценария для фотошоп?

ответ

1

Основываясь на запросе, я предлагаю использовать функцию Variables внутри фотошопа. Меню-> Изображения-> Переменные

Затем просто выберите слой, который вы хотите изменить, и назначьте имя переменной и выберите поведение «замена пикселей».

Вне Photoshop создайте текстовый файл с именем переменной в первой строке и именами файлов в новых строках для каждого.

Перейдите в меню -> файл -> import -> переменные наборы данных и найдите свой текстовый файл.

Если вы видите сообщение об ошибке, тогда все будет правильно.

Перейти к меню -> файл -> экспорт -> наборы данных в файлы и вуаля!

1

Да, с помощью скриптов вы можете это сделать. С исходным изображением (psd) загрузите каждое из 200 изображений и поместите их в исходный файл (затем сделайте все, что захотите, сохраните файл). Вернитесь к исходному файлу и продолжайте цикл по изображениям до тех пор, пока все сделанный.

// must have source psd open to start with. 

//pref pixels 
app.preferences.rulerUnits = Units.PIXELS; 

// call the source document 
var srcDoc = app.activeDocument; 


var inFolder = Folder.selectDialog("Please select folder to process"); 
if (inFolder != null) 
{ 
    var fileList = inFolder.getFiles(/\.(png)$/i); 
} 


// main loop starts here 
for(var i = 0; i < fileList.length; i++) 
{ 
    // load the frames one by one 
    var doc = open(fileList[i]); 

    var tempImage = app.activeDocument.name; 

    //select all 
    activeDocument.selection.selectAll() 

    //copy image 
    activeDocument.selection.copy(); 

    //close that document without saving 
    app.activeDocument.close(SaveOptions.DONOTSAVECHANGES); 

    // select the source image 
    activeDocument = srcDoc; 

    getMeThisLayer("my favourite layer") 

    //paste 
    app.activeDocument.paste(); 

    //deselect all 
    activeDocument.selection.deselect() 

    var filePath = srcDoc.path + "/" + tempImage; 

    // Flatten the image 
    activeDocument.flatten(); 

    // save out the image 
    var pngFile = new File(filePath); 
    pngSaveOptions = new PNGSaveOptions(); 
    pngSaveOptions.embedColorProfile = true; 
    pngSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE; 
    pngSaveOptions.matte = MatteType.NONE; pngSaveOptions.quality = 1; 

    activeDocument.saveAs(pngFile, pngSaveOptions, false, Extension.LOWERCASE); 

    // close that save png 
    app.activeDocument.close() 
} 



function getMeThisLayer(aLayerName) 
{ 
    try 
    { 
    // try to find the layer 
    app.activeDocument.activeLayer = app.activeDocument.layers.getByName(aLayerName) 
    return 
    } 

    catch(e) 
    { 
    //Whoops can't find layer 
    alert("Can't find layer " + aLayerName + "\n" + e) 
    } 
} 

Удачи.

+0

Это будет просто вставить изображение в случайном месте внутри psd. Как я могу обучить его замене определенного слоя или чего-то подобного ..? – Rizon

+1

Waaah! Вы должны помнить, что пока у вас есть файлы PSD прямо перед вами, я этого не делаю. Вы только дали очень короткое описание того, что вы хотите делать. Чем лучше описание, тем легче для других людей помочь вам. Примечание. Это не будет работать, если в файле есть группы (наборы слоев) - вы еще не указали это. Независимо от этого ... Я добавил функцию, которая будет искать слой, в этом случае один, называемый «мой любимый слой», изменит его на то, что ему нужно. Сохраните кавычки вокруг него и точно так же, как в файле psd. –

Смежные вопросы