Try this #target photoshop
app.bringToFront();
var doc = app.activeDocument;
var selectedLayers = getSelectedLayersIndex(doc);
if (selectedLayers.length == 2) {
try {
for (var i = 0; selectedLayers.length > i; i++) {
var sLayers = new Array();
for (var i = 0, l = selectedLayers.length; i < l; i++) {
selectLayerByIndex(selectedLayers[i], false);
if (app.activeDocument.activeLayer.typename == "LayerSet") {
executeAction(stringIDToTypeID("newPlacedLayer"), undefined, DialogModes.NO);
var xleft = activeDocument.activeLayer.bounds[0]
var ytop = activeDocument.activeLayer.bounds[1];
var ybot = activeDocument.activeLayer.bounds[3];
var width = activeDocument.activeLayer.bounds[2] - activeDocument.activeLayer.bounds[0];
var height = activeDocument.activeLayer.bounds[3] - activeDocument.activeLayer.bounds[1];
var xcenter = activeDocument.activeLayer.bounds[0] + width / 2
var ycenter = activeDocument.activeLayer.bounds[1] + height / 2
var xright = activeDocument.activeLayer.bounds[2]
app.activeDocument.activeHistoryState = app.activeDocument.historyStates[app.activeDocument.historyStates.length - 2];
selectLayerByIndex(selectedLayers[i], false);
} else {
var xpos = activeDocument.activeLayer.bounds[0];
var ytop = activeDocument.activeLayer.bounds[1];
var ybot = activeDocument.activeLayer.bounds[3];
var width = activeDocument.activeLayer.bounds[2] - activeDocument.activeLayer.bounds[0];
var height = activeDocument.activeLayer.bounds[3] - activeDocument.activeLayer.bounds[1];
var xcenter = activeDocument.activeLayer.bounds[0] + width / 2
var ycenter = activeDocument.activeLayer.bounds[1] + height / 2
var xleft = activeDocument.activeLayer.bounds[0]
var xright = activeDocument.activeLayer.bounds[2]
}
sLayers.push([activeDocument.activeLayer, xleft, ytop, width, height, xcenter, ycenter, xright, ybot]);
}
var oneWidth = sLayers[0][3]
var oneHeight = sLayers[0][4]
var oneXcenter = sLayers[0][5]
var oneYcenter = sLayers[0][6]
var twoWidth = sLayers[1][3]
var twoHeight = sLayers[1][4]
var twoXcenter = sLayers[1][5]
var twoYcenter = sLayers[1][6]
doc.activeLayer = sLayers[0][0]
Xdelta = twoXcenter - oneXcenter;
Ydelta = twoYcenter - oneYcenter;
transform(Xdelta, Ydelta, 100, 100);
doc.activeLayer = sLayers[1][0]
Xdelta = oneXcenter - twoXcenter;
Ydelta = oneYcenter - twoYcenter;
transform(Xdelta, Ydelta, 100, 100);
///////////////////////////////////////////////////////
for (var i = 0, l = selectedLayers.length; i < l; i++) {
selectLayerByIndex(selectedLayers[i], true);
}
}
} catch (e) {
alert(e + ': on line ' + e.line, 'Script Error', true);
}
}
function transform(DeltaX, DeltaY, WidthPercent, HeightPercent) {
var descriptor = new ActionDescriptor();
var descriptor2 = new ActionDescriptor();
descriptor.putEnumerated(stringIDToTypeID("freeTransformCenterState"), stringIDToTypeID("quadCenterState"), stringIDToTypeID("QCSAverage"));
descriptor2.putUnitDouble(stringIDToTypeID("horizontal"), stringIDToTypeID("pixelsUnit"), DeltaX);
descriptor2.putUnitDouble(stringIDToTypeID("vertical"), stringIDToTypeID("pixelsUnit"), DeltaY);
descriptor.putObject(stringIDToTypeID("offset"), stringIDToTypeID("offset"), descriptor2);
descriptor.putUnitDouble(stringIDToTypeID("width"), stringIDToTypeID("percentUnit"), WidthPercent);
descriptor.putUnitDouble(stringIDToTypeID("height"), stringIDToTypeID("percentUnit"), HeightPercent);
try {
executeAction(stringIDToTypeID("transform"), descriptor, DialogModes.NO);
} catch (e) {
alert(e + ': on line ' + e.line, 'Script Error', true);
}
}
function getSelectedLayersIndex(doc) {
var selectedLayers = [];
var ref = new ActionReference();
ref.putEnumerated(cTID('Dcmn'), cTID('Ordn'), cTID('Trgt'));
var desc = executeActionGet(ref);
if (desc.hasKey(sTID('targetLayers'))) {
desc = desc.getList(sTID('targetLayers'));
var c = desc.count;
for (var i = 0; i < c; i++) {
try {
doc.backgroundLayer;
selectedLayers.push(desc.getReference(i).getIndex());
} catch (e) {
selectedLayers.push(desc.getReference(i).getIndex() + 1);
}
}
} else {
var ref = new ActionReference();
ref.putProperty(cTID('Prpr'), cTID('ItmI'));
ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));
try {
doc.backgroundLayer;
selectedLayers.push(executeActionGet(ref).getInteger(cTID('ItmI')) - 1);
} catch (e) {
selectedLayers.push(executeActionGet(ref).getInteger(cTID('ItmI')));
}
}
return selectedLayers;
}
function selectLayerByIndex(index, 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) {}
}
function cTID(s) {
return app.charIDToTypeID(s);
}
function sTID(s) {
return app.stringIDToTypeID(s);
}
... View more