[英]Photoshop Script - create new fill layer behind image
I'm currently having an issue whereby I am creating some images and need to create a fill layer behind the current one. 我目前遇到一个问题,即正在创建一些图像,并且需要在当前图像后面创建一个填充层。 Currently the new layer sits on top of the image which gives me a white file. 当前,新层位于图像的顶部,这给了我一个白色文件。 This new white layer needs to be the last layer so the image file can sit above the fill layer. 这个新的白色层必须是最后一层,以便图像文件可以位于填充层上方。
Code is below 代码如下
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!");
}
Would this what you're looking to do? 您要这样做吗? Duplicate the background layer and then target the Background with the fill color? 复制背景图层,然后使用填充颜色作为背景的目标?
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.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.