#target photoshop
var iniEthalon = 'ethalon'; // имя слоя-эталона
var iniSide = 'h'; // h - по горизонтали, v - по вертикали
function getEthalon (doc) {
for (var i = 0; i < doc.artLayers.length; i++) {
if (doc.artLayers[i].name == iniEthalon) {
return doc.artLayers[i];
};
};
return null;
}
function getBounds (bounds) {
return [parseInt(bounds[0].toString()), parseInt(bounds[1].toString()), parseInt(bounds[2].toString()), parseInt(bounds[3].toString())]
}
function getDimensions (layer) {
var b = getBounds(layer.bounds);
return {height:b[3] - b[1], width:b[2] - b[0]};
}
function resizeLayer (layer, eth) {
var lDim = getDimensions(layer);
var eDim = getDimensions(eth);
switch (iniSide) {
case 'h':
var percent = eDim.width * 100 / lDim.width;
break;
case 'v':
var percent = eDim.height * 100 / lDim.height;
break;
default:
return false;
break;
}
layer.resize(percent, percent, AnchorPosition.TOPLEFT);
}
function moveLayer (layer, eth) {
var lB = getBounds(layer.bounds);
var eB = getBounds(eth.bounds);
layer.translate(eB[0] - lB[0], eB[1] - lB[1]);
}
function main () {
try {
var doc = app.activeDocument;
} catch (error) {
alert('Нет открытых документов!');
return false;
}
try {
var layer = doc.activeLayer;
} catch (error) {
alert('Ни один слой не выделен!');
return false;
}
var eth = getEthalon(doc);
if (eth == null) {
alert('Не найден слой-эталон!');
return false;
};
if (layer == eth) {
alert('Слой-эталон активен!');
return false;
};
resizeLayer(layer, eth);
moveLayer(layer, eth);
}
main();