Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

How to replace an image layer with another image in bulk?

New Here ,
Oct 22, 2020 Oct 22, 2020

Hello.

I have 200 photoshop banners (200 .psd files) and in each of these files is a layer with the same name in which is my logo (.png). I need to replace that logo layer with another png file in all 200 PSD files at once without doing it manually.

Please help.

TOPICS
Actions and scripting
810
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe
Community Expert ,
Oct 22, 2020 Oct 22, 2020

Record an action that targets the existing logo layer.Delete that Logo Layer. Target the top visible layer Alt+. then Place in the new logo layer. Then position the logo.  Batch that action.

 

If document and logo are different sizes you cam use my Place watermark script to place in your logo size it for the current document and position it.  record it in the action after you customize my script to use your logo file.

 

/* ==========================================================
// 2017  John J. McAssey (JJMack) 
// ======================================================= */
// This script is supplied as is. It is provided as freeware. 
// The author accepts no liability for any problems arising from its use.
/*
<javascriptresource>
<about>$$$/JavaScripts/PlaceWatermark/About=JJMack's PlaceWatermark ^r^rCopyright 2017 Mouseprints.net^r^rPhotoshop Script^rCustomize using first four var</about>
<category>JJMack's Script</category>
<enableinfo>true</enableinfo>
</javascriptresource>
*/
#target photoshop;  
app.bringToFront();  
var logoFile = "~/Desktop/JJMack.png";						// Watermark file should be large for resize down works better than up
var LogoSize = 10;											// percent of document height to resize Watermark to
var LogoMargin = 1;                                         // percent of Document height the Watermark should have as a margin
var BottomLetf = false;										// false = Bottom Right true Bottom Left 
//placeWatermark(logoFile, LogoSize, LogoMargin);           // Place Watermark into the bottom of the document
if (documents.length) app.activeDocument.suspendHistory('placeWatermark','placeWatermark(logoFile,LogoSize,LogoMargin)' );
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function placeWatermark(Image,Size,Margin){  
	if(!documents.length) return;  							// if no document return
		var fileObj = new File(Image);	                	// the passed file
	if(!fileObj.exists){  									// If file does not exits tell user 
		alert(fileObj.name  + " does not exist!"); 			// Alert User 
		return;  											// return
		}  
	try{  
		var doc = app.activeDocument;						// set Doc object to active document
		app.displayDialogs = DialogModes.NO;				// Dialog off 
		var strtRulerUnits = app.preferences.rulerUnits;	// Save Users ruler units 
		var strtTypeUnits = app.preferences.typeUnits;		// Save Users Type units 
		app.preferences.rulerUnits = Units.PIXELS;			// work with pixels 
		app.preferences.typeUnits = TypeUnits.PIXELS;		// work with pixels 
		var layers = app.activeDocument.layers;				// get layers
		app.activeDocument.activeLayer = layers[0];			// Target Top Layer
		placeFile(fileObj); 								// Place in file the Watermark png file
		activeDocument.activeLayer.resize(100 ,100,AnchorPosition.MIDDLECENTER); // Insure Place did not scale layer  
		var SB = activeDocument.activeLayer.bounds; 		// get layers bounds 
		var layerHeight = SB[3] - SB[1];					// get layers height  
		var resizePercent = (100/layerHeight)*(Size/100*doc.height.value); // Percent to resize by 
		activeDocument.activeLayer.resize(resizePercent ,resizePercent,AnchorPosition.MIDDLECENTER);  // Resize width and height by percentage 
		SB = activeDocument.activeLayer.bounds;				// get resized layers bounds  
		activeDocument.activeLayer.translate(-SB[0].value,-SB[1].value); // Move resized layer to top left canvas corner 
		var LayerWidth = (SB[2].value - SB[0].value);		// get resized layers width  
		var LayerHeight = (SB[3].value - SB[1].value);  	// get resized layers height
		marginSize = Margin/100*doc.height.value;			// Margin size
		// move resized watermark into the document lower right corner with some margin or lower left
		if  ( BottomLetf) {activeDocument.activeLayer.translate(marginSize,( doc.height.value -marginSize - LayerHeight));}
		else {activeDocument.activeLayer.translate((doc.width.value -marginSize - LayerWidth),( doc.height.value -marginSize - LayerHeight));}
	}
	catch(e) { alert(e + ': on line ' + e.line); }			// inform user of error  
	finally{  
		app.preferences.rulerUnits = strtRulerUnits;		// Restore user ruler units  
		app.preferences.typeUnits = strtTypeUnits;			// Restore user type units    
	};  
}; 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
function placeFile(placeFile) {  
    var desc21 = new ActionDescriptor();  
    desc21.putPath( charIDToTypeID('null'), new File(placeFile) );  
    desc21.putEnumerated( charIDToTypeID('FTcs'), charIDToTypeID('QCSt'), charIDToTypeID('Qcsa') );  
    var desc22 = new ActionDescriptor();  
    desc22.putUnitDouble( charIDToTypeID('Hrzn'), charIDToTypeID('#Pxl'), 0.000000 );  
    desc22.putUnitDouble( charIDToTypeID('Vrtc'), charIDToTypeID('#Pxl'), 0.000000 );  
    desc21.putObject( charIDToTypeID('Ofst'), charIDToTypeID('Ofst'), desc22 );  
    executeAction( charIDToTypeID('Plc '), desc21, DialogModes.NO );  
};  
JJMack
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Oct 22, 2020 Oct 22, 2020
LATEST

If you had placed a linked smart object it would be easy to update the modified file using a single line action using the batch command.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines