我想在photoshop中对图像执行比例变换。
我希望使用javascript界面自动执行此操作。我有点熟悉做这种事情。要进行转换,必须通过scriptlistening插件使用photoshop actionscript语言,因为转换函数不会在DOM中公开。
我不太熟悉这些变量正在做什么,而且我在确定如何使变换成比例时遇到很多麻烦(即在我们放大/缩小时不要改变纵横比)。
其他人是否熟悉或有任何想法?
var idTrnf = charIDToTypeID("Trnf");
var desc22 = new ActionDescriptor();
var idnull = charIDToTypeID("null");
var ref12 = new ActionReference();
var idLyr = charIDToTypeID("Lyr ");
var idOrdn = charIDToTypeID("Ordn");
var idTrgt = charIDToTypeID("Trgt");
ref12.putEnumerated(idLyr, idOrdn, idTrgt);
desc22.putReference(idnull, ref12);
var idFTcs = charIDToTypeID("FTcs");
var idQCSt = charIDToTypeID("QCSt");
var idQcsa = charIDToTypeID("Qcsa");
desc22.putEnumerated(idFTcs, idQCSt, idQcsa);
var idOfst = charIDToTypeID("Ofst");
var desc23 = new ActionDescriptor();
var idHrzn = charIDToTypeID("Hrzn");
var idPxl = charIDToTypeID("#Pxl");
desc23.putUnitDouble(idHrzn, idPxl, 622.000000);
var idVrtc = charIDToTypeID("Vrtc");
var idPxl = charIDToTypeID("#Pxl");
desc23.putUnitDouble(idVrtc, idPxl, -480.500000);
var idOfst = charIDToTypeID("Ofst");
desc22.putObject(idOfst, idOfst, desc23);
var idWdth = charIDToTypeID("Wdth");
var idPrc = charIDToTypeID("#Prc");
desc22.putUnitDouble(idWdth, idPrc, 150.000000);
var idHght = charIDToTypeID("Hght");
var idPrc = charIDToTypeID("#Prc");
desc22.putUnitDouble(idHght, idPrc, 150.000000);
var idIntr = charIDToTypeID("Intr");
var idIntp = charIDToTypeID("Intp");
var idBcbc = charIDToTypeID("Bcbc");
desc22.putEnumerated(idIntr, idIntp, idBcbc);
executeAction(idTrnf, desc22, DialogModes.NO);
idPrc 是我用来改变变换百分比的方法。但我不确定 idHrzn 和 idVrtc 正在做什么以及如何生成正确的数字,以便转换不会改变iamge的宽高比。
答案 0 :(得分:0)
正如Anna Forrest在评论中指出的那样,没有必要使用脚本监听器来执行百分比指定的比例调整大小。
#target photoshop
main ();
function main ()
{
if (app.documents.length < 1)
{
alert ('No document open to resize.');
return;
}
// Make the image 50% smaller.
var resizePercent = 0.5;
// You might want this to be something else depending on the image content...
var resampleMethod = ResampleMethod.BICUBIC;
// Apply the resize to Photoshop's active (selected) document.
var doc = app.activeDocument;
// Get the image size in document units.
var resizedWidth = doc.width.value * resizePercent;
var resizedHeight = doc.height.value * resizePercent;
// Apply the change to the image.
doc.resizeImage (new UnitValue (resizedWidth, doc.width.type), new UnitValue (resizedHeight, doc.height.type), doc.resolution, resampleMethod);
}