Действие Photoshop, чтобы сделать 1 случайный слой видимым в каждой группе - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь использовать действия Photoshop для генерации случайных изображений, которые состоят из случайной выборки слоев. У меня есть 3 группы слоев, которые ВСЕ не видны по умолчанию.

  1. В каждой группе я бы хотел сделать видимым 1 случайный слой (всего будет 3 слоя "on")
  2. Экспортируйте все как файл .png.
  3. Повторить n раз

Примеры групп / слоев:

[FRUITS]
* [Apples]
* [Oranges]
* [Pears]
* [Bananas]
* [Kiwis]

[VEGGIES]
* [Asparagus]
* [Cilantro]
* [Eggplant]

[MEATS]
* [Beef]
* [Pork]

По умолчанию все слои скрыты, но при воспроизведении действия я могу получить следующий результат (видимые слои):

Image1: [Apples] [Eggplant] [Pork]
Image2: [Pears] [Asparagus] [Pork]
Image3: [Kiwis] [Cilantro] [Beef]

1 Ответ

0 голосов
/ 26 апреля 2019

Вот мой сценарий, но не забудьте выполнить следующие шаги перед его запуском:

  1. Скрыть все слои и группы, кроме фона.
  2. Сохранить PSD.
  3. Закройте, а затем снова откройте.

Теперь вы готовы к работе.

Особенности

  • Создавайте неограниченное количество шаблонов, которые вы хотите из своих групп.

  • Сохраняйте все шаблоны как проиндексированный отдельный PNG в отдельной папке с именем PNG.

СмотретьGIF (ниже), чтобы понять больше:

enter image description here

function Visible() {
  var Grps = app.activeDocument.layerSets; // loops through all groups
  for(var i = 0; i < Grps.length; i++){
    var tmp = app.activeDocument.layerSets[i].layers.length;
    app.activeDocument.layerSets[i].visible=true;
    var groupChildArr = app.activeDocument.layerSets[i].layers;
    var randLays = Math.floor(Math.random() * tmp);
    groupChildArr[randLays].visible = true;
    Save();
  }
  Revert();
}

function Save() {
  var outFolder = app.activeDocument; // psd name
  var outPath = outFolder.path;
  var fName = "PNG";   // define folder name
  var f = new Folder(outPath + "/" + fName);
  if ( ! f.exists ) {
    f.create()
  }
  var saveFile = new File(outPath + "/" + fName +"/" + "Pattern_" +  num + ".png");
  pngSaveOptions = new PNGSaveOptions();
  pngSaveOptions.interlaced = false;
  app.activeDocument.saveAs(saveFile, pngSaveOptions, true, Extension.LOWERCASE);
}

function Revert(){
  var idslct = charIDToTypeID( "slct" );
  var desc300 = new ActionDescriptor();
  var idnull = charIDToTypeID( "null" );
  var ref163 = new ActionReference();
  var idSnpS = charIDToTypeID( "SnpS" );
  ref163.putName( idSnpS, "test.psd" );
  desc300.putReference( idnull, ref163 );
  executeAction( idslct, desc300, DialogModes.NO );
}

var count = prompt("How many patterns you want","");
for (var x=0 ; x<count;x++){
  var num = x+1;
  Visible();
}
...