Сценарии Photoshop: замена изображения

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

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

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


person Rizon    schedule 15.10.2013    source источник


Ответы (2)


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

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

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

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

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

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

person design_overflow    schedule 05.02.2014

Да, с помощью скриптов вы можете это сделать. С исходным изображением (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)
  }
}

Развлекайся.

person Ghoul Fool    schedule 15.10.2013
comment
Это просто вставит изображение в случайное место внутри psd. Как я могу указать ему заменить определенный слой или что-то подобное? - person Rizon; 21.10.2013
comment
Ваааа! Вы должны помнить, что пока у вас есть PSD-файлы прямо перед вами, у меня их нет. Вы дали очень краткое описание того, что вы хотите сделать. Чем лучше описание, тем легче другим людям помочь вам. Примечание. Это не будет работать, если в файле есть группы (наборы слоев) — опять же, вы не указали это. Независимо от этого... Я добавил функцию, которая будет искать слой, в данном случае, тот, который называется моим любимым слоем, изменяет его на то, что ему нужно. Держите его в кавычках и точно так же, как в файле psd. - person Ghoul Fool; 21.10.2013