2014-06-24 2 views
0

저는 포토샵에서 이미지에 비례 변환을 수행하고 싶습니다.비례 자유 변환

자바 스크립트 인터페이스를 사용하여 자동으로이 작업을 수행하려고합니다. 나는 이런 종류의 일을하는 것에 익숙하다. 변환 기능을 사용하려면 transform 함수가 DOM에 노출되어 있지 않으므로 scriptlistening 플러그인을 통해 Photoshop 액션 스크립트 언어를 사용해야합니다.

저는이 변수들이하는 일에 익숙하지 않아 변환을 비례하게 만드는 방법을 결정하는 데 많은 어려움을 겪고 있습니다. 즉, 확대/축소 할 때 가로 세로 비율을 변경하지 마십시오.

다른 사람이 알고 있거나 아이디어가 있습니까?

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 자바 스크립트 레퍼런스를 사용하고 있습니다 만, 대부분은 크게 다르지 않습니다. 이 질문은 실제로 포토샵 내부 기능에 대해 다른 어떤 것보다 더 많은 것을 지시합니다. – 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