【Photoshop JSX脚本】交换两个图层位置

选中两个图层,交换图层位置

// swapPosition-mirror.jsx - Adobe Photoshop Script  
// Version: 0.2.1  
// Author: Anton Lyubushkin (nvkz.nemo@gmail.com)  
// Website: http://lyubushkin.pro/  
// ============================================================================  
// Installation:  
// 1. Place script in:  
//    PC(32):  C:\Program Files (x86)\Adobe\Adobe Photoshop CC#\Presets\Scripts\  
//    PC(64):  C:\Program Files\Adobe\Adobe Photoshop CC# (64 Bit)\Presets\Scripts\  
//    Mac:     /Applications/Adobe Photoshop CC#/Presets/Scripts/  
// 2. Restart Photoshop  
// 3. Choose File > Scripts > swapPosition-mirror  
// ============================================================================  //#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 xpos = activeDocument.activeLayer.bounds[0];  var ytop = activeDocument.activeLayer.bounds[1];  var ybot = activeDocument.activeLayer.bounds[3];  var xleft = activeDocument.activeLayer.bounds[0]  var xright = activeDocument.activeLayer.bounds[2]  var height = activeDocument.activeLayer.bounds[3] - activeDocument.activeLayer.bounds[1];  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 height = activeDocument.activeLayer.bounds[3] - activeDocument.activeLayer.bounds[1];  var xleft = activeDocument.activeLayer.bounds[0]  var xright = activeDocument.activeLayer.bounds[2]  }  sLayers.push([activeDocument.activeLayer, xpos, ytop, ybot, height, xleft, xright]);  }  var delta0_y = 0;  var delta1_y = 0;  function differentHeight() {  if (sLayers[1][4] != sLayers[0][4]) {  return true  } else {  return false  }  }  function returnSmaller() {  if (sLayers[1][4] < sLayers[0][4]) {  return [sLayers[1][0], sLayers[0][0]]  } else {  return [sLayers[0][0], sLayers[1][0]]  }  }  if (sLayers[1][2] != sLayers[0][2]) {  if (differentHeight() == true) {  var smallLyr = returnSmaller();  if (smallLyr[0].bounds[1] < smallLyr[1].bounds[1] || smallLyr[0].bounds[3] > smallLyr[1].bounds[3]) {  delta0_y = (sLayers[1][3] - ((sLayers[1][3] - sLayers[1][2]))) - (sLayers[0][3] - ((sLayers[0][3] - sLayers[0][2])));  delta1_y = (sLayers[0][3] - ((sLayers[0][3] - sLayers[0][2]))) - (sLayers[1][3] - ((sLayers[1][3] - sLayers[1][2])));  } else {  delta0_y = 0;  delta1_y = 0;  }  } else {  delta0_y = (sLayers[1][3] - ((sLayers[1][3] - sLayers[1][2]))) - (sLayers[0][3] - ((sLayers[0][3] - sLayers[0][2])));  delta1_y = (sLayers[0][3] - ((sLayers[0][3] - sLayers[0][2]))) - (sLayers[1][3] - ((sLayers[1][3] - sLayers[1][2])));  }  }  if (sLayers[0][5] < sLayers[1][5] && sLayers[0][6] < sLayers[1][6]) {  var delta0_x = sLayers[1][6] - sLayers[0][6];  var delta1_x = sLayers[0][5] - sLayers[1][5];  } else {  var delta0_x = sLayers[1][5] - sLayers[0][5];  var delta1_x = sLayers[0][6] - sLayers[1][6];  }  sLayers[0][0].translate(delta0_x, delta0_y);  sLayers[1][0].translate(delta1_x, delta1_y);  for (var i = 0, l = selectedLayers.length; i < l; i++) {  selectLayerByIndex(selectedLayers[i], true);  }  }  } catch (e) {  alert("Oops! These layers cannot be repositioned");  }  
}  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);}  

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部