2014-06-24 1 views
0

Je souhaite effectuer une transformation proportionnelle sur une image dans Photoshop.Transformation proportionnelle libre

Je cherche à le faire automatiquement en utilisant l'interface javascript. Je connais un peu ce genre de choses. Pour faire une transformation, il faut utiliser le langage actionscript de photoshop via le plugin scriptlistening car la fonction de transformation n'est pas exposée dans le DOM. Je ne suis pas très familier avec ce que ces variables font et j'ai beaucoup de mal à déterminer comment rendre ma transformation proportionnelle (c'est-à-dire ne change pas le rapport d'aspect quand nous agrandissons/rétrécissons).

Quelqu'un d'autre est familier ou a des idées?

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 est ce que j'utilise pour changer le pour cent de la transformation. mais je ne suis pas sûr ce que idHrzn et idVrtc font et comment je peux générer le bon nombre tel que la transformation ne changera pas le rapport d'aspect de l'iamge.

+0

Il y a [un groupe d'interfaces de script] (http://www.adobe.com/devnet/photoshop/scripting.html), quelle version utilisez-vous? – Teemu

+0

J'utilise la référence javascript CS6, mais pour la plupart, ils ne sont pas significativement différents. Cette question est vraiment plus orientée vers les fonctionnalités internes de photoshop que toute autre chose. – user2666063

+0

Je ne suis pas sûr de ce que vous essayez vraiment de faire. Si vous ne faites que redimensionner l'image, pourquoi ne pas utiliser la méthode "redimensionner" dans le dom? –

Répondre

0

Comme indiqué par Anna Forrest dans les commentaires, il n'est pas nécessaire d'utiliser l'écouteur de script pour effectuer un redimensionnement proportionnel spécifié par un pourcentage.

#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

Riche, merci de prendre votre temps pour commenter cette question vieille de 5 mois. Pour clarifier au cas où ça ne l'était pas. Je suis conscient qu'un redimensionnement d'image proportionnel peut être obtenu en utilisant la fonction resizeImage, cependant, mon intérêt est de comprendre ce qui est requis pour écrire une transformation libre proportionnelle, sans utiliser la fonction de redimensionnement d'image, afin de mieux comprendre comment fonctionne la transformation libre. Peut-être que c'est un peu académique pour vous. Merci encore! – user2666063

Questions connexes