比例自由变换

时间:2014-06-24 17:35:45

标签: javascript photoshop photoshop-script

我想在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的宽高比。

1 个答案:

答案 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);
}