Hello Everyone, " this script not to work perfectly"
"When a horizontal image is copied and closed, select the 'HFrame' layer in the active document and paste the JPEG image. Similarly, when a vertical image is copied and closed, select the 'VFrame' layer in the active document and paste the JPEG image. Currently, copying, closing, and pasting only works for JPEG images."
This script helps in copying horizontal and vertical images and pasting them into an HFrame or VFrame. The images are automatically adjusted to fit within the layer.
#target photoshop
// Layer bounds variables
var layerBounds = activeDocument.activeLayer.bounds;
var layerWidth = layerBounds[2].value - layerBounds[0].value;
var layerHeight = layerBounds[3].value - layerBounds[1].value;
function main() {
// Save the current dialog display settings
var savedDisplayDialogs = app.displayDialogs;
app.displayDialogs = DialogModes.NO;
// Get the selected layers: courtesy of jazz-y
var s2t = stringIDToTypeID;
(r = new ActionReference()).putProperty(s2t('property'), p = s2t('targetLayersIDs'));
r.putEnumerated(s2t('document'), s2t('ordinal'), s2t('targetEnum'));
var lrs = executeActionGet(r).getList(p),
sel = new ActionReference();
// Loop over the selected layers: courtesy of jazz-y
for (var i = 0; i < lrs.count; i++) {
sel.putIdentifier(s2t('layer'), p = lrs.getReference(i).getIdentifier(s2t('layerID')));
(r = new ActionReference()).putIdentifier(s2t('layer'), p);
(d = new ActionDescriptor()).putReference(s2t("target"), r);
executeAction(s2t('select'), d, DialogModes.NO);
// Layer bounds variables
var layerBounds = activeDocument.activeLayer.bounds;
var layerWidth = layerBounds[2].value - layerBounds[0].value;
var layerHeight = layerBounds[3].value - layerBounds[1].value;
// Rename the selected layers
with (activeDocument.activeLayer) if (isBackgroundLayer === false && kind === LayerKind.NORMAL
&& kind !== LayerKind.TEXT && kind !== LayerKind.SMARTOBJECT) {
if (layerWidth > layerHeight) {
activeDocument.activeLayer.name = "HFrame";
} else {
activeDocument.activeLayer.name = "VFrame";
}
}
}
// Finish the loop
// Restore the dialogs
app.displayDialogs = savedDisplayDialogs;
}
// Single history stage undo
activeDocument.suspendHistory("Rename Selected layers to HFrame or VFrame.jsx", "main()");
for (var m = 0; m < app.activeDocument.layers.length; m++){
try {
// next document select,copy& close
var id26 = charIDToTypeID("slct");
var desc9 = new ActionDescriptor();
var id27 = charIDToTypeID("null");
var ref3 = new ActionReference();
var id28 = charIDToTypeID("Dcmn");
ref3.putOffset(id28, 1);
desc9.putReference(id27, ref3);
executeAction(id26, desc9, DialogModes.NO);
var id29 = charIDToTypeID("setd");
var desc10 = new ActionDescriptor();
var id30 = charIDToTypeID("null");
var ref4 = new ActionReference();
var id31 = charIDToTypeID("Chnl");
var id32 = charIDToTypeID("fsel");
ref4.putProperty(id31, id32);
desc10.putReference(id30, ref4);
var id33 = charIDToTypeID("T ");
var id34 = charIDToTypeID("Ordn");
var id35 = charIDToTypeID("Al ");
desc10.putEnumerated(id33, id34, id35);
executeAction(id29, desc10, DialogModes.NO);
var id36 = charIDToTypeID("copy");
executeAction(id36, undefined, DialogModes.NO);
var id44 = charIDToTypeID("Cls ");
executeAction(id44, undefined, DialogModes.NO);
// Check if the copied document is horizontal or vertical
var copiedDoc = app.activeDocument;
var isHorizontal = copiedDoc.width > copiedDoc.height;
// Select the appropriate layer and paste the copied document
var layerName = isHorizontal ? "HFrame" : "VFrame";
var layers = activeDocument.layers;
for (var j = 0; j < layers.length; j++) {
if (layers[j].name == layerName) {
app.activeDocument.activeLayer = layers[j];
break;
}
}
app.activeDocument.paste();
var id57 = stringIDToTypeID( "newPlacedLayer" );
executeAction( id57, undefined, DialogModes.NO );
var oldPref = app.preferences.rulerUnits
app.preferences.rulerUnits = Units.PIXELS;
var doc = activeDocument;
var iLayer = doc.activeLayer;
layerDown ();
var mLayerB = doc.activeLayer.bounds;
doc.activeLayer = iLayer;
var scale = Math.max((mLayerB[2]-mLayerB[0])/(iLayer.bounds[2]-iLayer.bounds[0]),(mLayerB[3]-mLayerB[1])/(iLayer.bounds[3]-iLayer.bounds[1]));
iLayer.resize (scale*100,scale*100);
iLayer.translate((mLayerB[0]+mLayerB[2])/2-(iLayer.bounds[0]+iLayer.bounds[2])/2,(mLayerB[1]+mLayerB[3])/2-(iLayer.bounds[1]+iLayer.bounds[3])/2);
createSmartObject(app.activeDocument.activeLayer);
var oldPref = app.preferences.rulerUnits
app.preferences.rulerUnits = Units.PIXELS;
var doc = activeDocument;
var iLayer = doc.activeLayer;
layerDown ();
var mLayerB = doc.activeLayer.bounds;
doc.activeLayer = iLayer;
var scale = Math.max((mLayerB[2]-mLayerB[0])/(iLayer.bounds[2]-iLayer.bounds[0]),(mLayerB[3]-mLayerB[1])/(iLayer.bounds[3]-iLayer.bounds[1]));
iLayer.resize (scale*100,scale*100);
iLayer.translate((mLayerB[0]+mLayerB[2])/2-(iLayer.bounds[0]+iLayer.bounds[2])/2,(mLayerB[1]+mLayerB[3])/2-(iLayer.bounds[1]+iLayer.bounds[3])/2);
clip ();
var id3 = charIDToTypeID( "slct" );
var desc2 = new ActionDescriptor();
var id4 = charIDToTypeID( "null" );
var ref1 = new ActionReference();
var id5 = charIDToTypeID( "Lyr " );
var id6 = charIDToTypeID( "Ordn" );
var id7 = charIDToTypeID( "Bckw" );
ref1.putEnumerated( id5, id6, id7 );
desc2.putReference( id4, ref1 );
var id8 = charIDToTypeID( "MkVs" );
desc2.putBoolean( id8, false );
executeAction( id3, desc2, DialogModes.NO );
var id9 = charIDToTypeID( "setd" );
var desc3 = new ActionDescriptor();
var id10 = charIDToTypeID( "null" );
var ref2 = new ActionReference();
var id11 = charIDToTypeID( "Lyr " );
var id12 = charIDToTypeID( "Ordn" );
var id13 = charIDToTypeID( "Trgt" );
ref2.putEnumerated( id11, id12, id13 );
desc3.putReference( id10, ref2 );
var id14 = charIDToTypeID( "T " );
var desc4 = new ActionDescriptor();
var id15 = charIDToTypeID( "Nm " );
desc4.putString( id15, "photoframe" );
var id16 = charIDToTypeID( "Lyr " );
desc3.putObject( id14, id16, desc4 );
executeAction( id9, desc3, DialogModes.NO );
var id3 = charIDToTypeID( "slct" );
var desc2 = new ActionDescriptor();
var id4 = charIDToTypeID( "null" );
var ref1 = new ActionReference();
var id5 = charIDToTypeID( "Lyr " );
var id6 = charIDToTypeID( "Ordn" );
var id7 = charIDToTypeID( "Frwr" );
ref1.putEnumerated( id5, id6, id7 );
desc2.putReference( id4, ref1 );
var id8 = charIDToTypeID( "MkVs" );
desc2.putBoolean( id8, false );
executeAction( id3, desc2, DialogModes.NO );
var id82 = charIDToTypeID( "setd" );
var desc15 = new ActionDescriptor();
var id83 = charIDToTypeID( "null" );
var ref6 = new ActionReference();
var id84 = charIDToTypeID( "Lyr " );
var id85 = charIDToTypeID( "Ordn" );
var id86 = charIDToTypeID( "Trgt" );
ref6.putEnumerated( id84, id85, id86 );
desc15.putReference( id83, ref6 );
var id87 = charIDToTypeID( "T " );
var desc16 = new ActionDescriptor();
var id88 = charIDToTypeID( "Nm " );
desc16.putString( id88, "IMAGE LAYER" );
var id89 = charIDToTypeID( "Lyr " );
desc15.putObject( id87, id89, desc16 );
executeAction( id82, desc15, DialogModes.NO );
} catch (e) {}
};
////////////////////////////////////
////////////////////////////////////
function layerDown(){
var idslct = charIDToTypeID( "slct" );
var desc2 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref1 = new ActionReference();
var idLyr = charIDToTypeID( "Lyr " );
var idOrdn = charIDToTypeID( "Ordn" );
var idBckw = charIDToTypeID( "Bckw" );
ref1.putEnumerated( idLyr, idOrdn, idBckw );
desc2.putReference( idnull, ref1 );
var idMkVs = charIDToTypeID( "MkVs" );
desc2.putBoolean( idMkVs, false );
var idLyrI = charIDToTypeID( "LyrI" );
var list1 = new ActionList();
list1.putInteger( 3 );
desc2.putList( idLyrI, list1 );
executeAction( idslct, desc2, DialogModes.NO );
};
function createSmartObject(layer) {
var idnewPlacedLayer = stringIDToTypeID( 'newPlacedLayer' );
executeAction(idnewPlacedLayer, undefined, DialogModes.NO);
};
function getSelectedLayers(){
var idGrp = stringIDToTypeID( "groupLayersEvent" );
var descGrp = new ActionDescriptor();
var refGrp = new ActionReference();
refGrp.putEnumerated(charIDToTypeID( "Lyr " ),charIDToTypeID( "Ordn" ),charIDToTypeID( "Trgt" ));
descGrp.putReference(charIDToTypeID( "null" ), refGrp );
executeAction( idGrp, descGrp, DialogModes.ALL );
var resultLayers=new Array();
for (var ix=0;ix<app.activeDocument.activeLayer.layers.length;ix++){
resultLayers.push(app.activeDocument.activeLayer.layers[ix]);
};
var id8 = charIDToTypeID( "slct" );
var desc5 = new ActionDescriptor();
var id9 = charIDToTypeID( "null" );
var ref2 = new ActionReference();
var id10 = charIDToTypeID( "HstS" );
var id11 = charIDToTypeID( "Ordn" );
var id12 = charIDToTypeID( "Prvs" );
ref2.putEnumerated( id10, id11, id12 );
desc5.putReference( id9, ref2 );
executeAction( id8, desc5, DialogModes.NO );
alert (resultLayers)
return resultLayers;
};
function clip(){
var idGrpL = charIDToTypeID( "GrpL" );
var desc7 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref6 = new ActionReference();
var idLyr = charIDToTypeID( "Lyr " );
var idOrdn = charIDToTypeID( "Ordn" );
var idTrgt = charIDToTypeID( "Trgt" );
ref6.putEnumerated( idLyr, idOrdn, idTrgt );
desc7.putReference( idnull, ref6 );
executeAction( idGrpL, desc7, DialogModes.NO );
};
function layerDown(){
var idslct = charIDToTypeID( "slct" );
var desc2 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref1 = new ActionReference();
var idLyr = charIDToTypeID( "Lyr " );
var idOrdn = charIDToTypeID( "Ordn" );
var idBckw = charIDToTypeID( "Bckw" );
ref1.putEnumerated( idLyr, idOrdn, idBckw );
desc2.putReference( idnull, ref1 );
var idMkVs = charIDToTypeID( "MkVs" );
desc2.putBoolean( idMkVs, false );
var idLyrI = charIDToTypeID( "LyrI" );
var list1 = new ActionList();
list1.putInteger( 3 );
desc2.putList( idLyrI, list1 );
executeAction( idslct, desc2, DialogModes.NO );
};
////// collect bounds of selected layers //////
function collectSelectedLayersAsDOM () {
// get selected layers;
var selectedLayers = new Array;
var ref = new ActionReference();
ref.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
var desc = executeActionGet(ref);
if (desc.getBoolean(stringIDToTypeID("hasBackgroundLayer")) == true) {var theAdd =0}
else {var theAdd = 1};
if( desc.hasKey( stringIDToTypeID( 'targetLayers' ) ) ){
desc = desc.getList( stringIDToTypeID( 'targetLayers' ));
var c = desc.count;
var selectedLayers = new Array();
// run through selected layers;
for(var i=0;i<c;i++){
var theIndex = desc.getReference( i ).getIndex()+theAdd;
selectLayerByIndex(theIndex, false);
selectedLayers.push(activeDocument.activeLayer);
};
// if only one:
}else{
selectedLayers = [activeDocument.activeLayer]
};
return selectedLayers
};
// by mike hale, via paul riggott;
// http://forums.adobe.com/message/1944754#1944754
function selectLayerByIndex(index,add){
add = undefined ? add = false:add
var ref = new ActionReference();
ref.putIndex(charIDToTypeID("Lyr "), index);
var desc = new ActionDescriptor();
desc.putReference(charIDToTypeID("null"), ref );
if(add) desc.putEnumerated( stringIDToTypeID( "selectionModifier" ), stringIDToTypeID( "selectionModifierType" ), stringIDToTypeID( "addToSelection" ) );
desc.putBoolean( charIDToTypeID( "MkVs" ), false );
try{
executeAction(charIDToTypeID("slct"), desc, DialogModes.NO );
}catch(e){
alert(e.message);
}
};