2014-06-24 41 views
0

我想对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是我用来改变的改变百分比。但我不知道什么idHrznidVrtc正在做什么,以及如何我可以生成正确的数字,使转换不会改变iamge的长宽比。

+0

有[一堆脚本界面](http://www.adobe.com/devnet/photoshop/scripting.html),您使用的是哪个版本? – Teemu

+0

我正在使用CS6 JavaScript参考,但大多数情况下它们没有明显不同。这个问题实际上是针对photoshop内部功能的,而不是其他任何东西。 – user2666063

+0

我不确定你真的想要做什么。如果您只是调整图像大小,为什么不在dom中使用“调整大小”方法? –

回答

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); 
} 
+0

非常感谢您抽出时间评论这个5个月大的问题。如果不是,请澄清。我意识到使用resizeImage函数可以实现成比例的图像大小调整,但是,我的兴趣在于理解为了更好地理解自由变换的工作原理,在不使用图像大小调整函数的情况下编写比例自由变换所需的内容。也许这对你来说有点学术性。再次感谢! – user2666063