Photoshop Script - создайте новый заливочный слой позади изображения

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

Код ниже

var NoImages = File.openDialog("Select your logo file", false);

if (NoImages !== null) { 
    var doc = open(NoImages, OpenDocumentType.PNG.JPEG); // Open PNG file

    if (doc == null) {
      throw "Something is wrong with the file.";
    }

    var startState = doc.activeHistoryState;       // save for undo
    var initialPrefs = app.preferences.rulerUnits; // will restore at end
    app.preferences.rulerUnits = Units.PIXELS;     // use pixels

    // Folder selection dialog
    var destFolder = Folder.selectDialog( "Choose an output folder");

    if (destFolder == null) {
      // User canceled, just exit
      throw "";
    }

    // Save icons in PNG using Save for Web.
    var sfw = new ExportOptionsSaveForWeb();
    sfw.format = SaveDocumentType.PNG;
    sfw.PNG8 = false; // use PNG-24
    sfw.transparency = true;
    doc.info = null;  // delete metadata

   var no_images = [
      {"name": "no-image-1-1", "width":1170, "height":1170},
      {"name": "no-image-2-3", "width":779, "height":1170},
      {"name": "no-image-3-2", "width":1170, "height":779},
      {"name": "no-image-3-4", "width":879, "height":1170},
      {"name": "no-image-4-3", "width":1170, "height":879},
      {"name": "no-image-7-2", "width":1170, "height":334},
      {"name": "no-image-9-3", "width":1170, "height":391},
      {"name": "no-image-11-5", "width":1170, "height":532},
      {"name": "no-image-16-9", "width":1170, "height":658}
    ];

    var no_image;
    for (i = 0; i < no_images.length; i++)  {
        no_image = no_images[i];
        doc.resizeCanvas(no_image.width, no_image.height, // width, height
        null, ResampleMethod.BICUBICSHARPER);

        var layerRef = app.activeDocument.artLayers.add();
        layerRef.name = "fill";  
        var myColor = new SolidColor();  
        myColor.rgb.red = 255;  
        myColor.rgb.green = 255;  
        myColor.rgb.blue = 255;  
        activeDocument.selection.fill( myColor); 

        var destFileName = no_image.name + ".png";
        doc.exportDocument(new File(destFolder + "/" + destFileName), ExportType.SAVEFORWEB, sfw);
        doc.activeHistoryState = startState; // undo resize
    }

alert("No Images created!");

}

1 ответ

Будет ли это то, что вы хотите сделать? Дублируйте фоновый слой, а затем наведите на фон цвет заливки?

var docRef = app.activeDocument;

var layerRef = docRef.layers.getByName ("Background").duplicate(); //duplicates the background layer
layerRef.name = "logo"; //renames the duplicated layer.

docRef.activeLayer = docRef.layers.getByName ("Background");//selects the Background layer

var myColor = new SolidColor();  
myColor.rgb.red = 255;  
myColor.rgb.green = 255;  
myColor.rgb.blue = 255;  

activeDocument.selection.fill( myColor); //fills background layer with white.
Другие вопросы по тегам