2017-07-13 68 views
0

我目前遇到了一个问题,我正在创建一些图像,并需要在当前背景之后创建填充图层。目前,新图层位于图片的顶部,它为我提供了一个白色文件。这个新的白色图层需要是最后一个图层,因此图像文件可以位于填充图层上方。Photoshop脚本 - 在图像背后创建新的填充图层

代码如下

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!"); 

} 
+0

你不能只是将当前活动层与填充层交换? –

回答

0

这会你打算做什么?复制背景图层,然后使用填充颜色定位背景?

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.