2013-10-27 3 views
1

Я весь день работаю в поисковых системах, чтобы найти способ выравнивания слоя, который был преобразован в центр интеллектуальных объектов, на холст, обработанный сценариями, но пока не нашел решения. Я закончил с кодом ниже, но он не выполняет эту работу. Может ли кто-нибудь помочь, пожалуйста?Как выровнять центр объекта Smart Object с холстом?

var baseFile = new File(openDialog()); //open base JPEG file 
var workFile = new File(openDialog()); //open work JPEG file 
var baseDoc = app.open(baseFile); 
var workDoc = app.open(workFile); 

createSO(workDoc.layers[0]); 
workDoc.resizeImage(280,280); 
workDoc.artLayers[0].duplicate(baseDoc, ElementPlacement.INSIDE); 
app.activeDocument = baseDoc; 

var Hoffset = (baseDoc.width - workDoc.width)/2; 
var Voffset = (baseDoc.height - workDoc.height)/2; 
baseDoc.layers[1].position = Array(Hoffset, Voffset); 

function createSO(){ 
    var doc = app.activeDocument; 
    var idnewPlacedLayer = stringIDToTypeID("newPlacedLayer"); 
    executeAction(idnewPlacedLayer, undefined, DialogModes.NO); 
    return doc.activeLayer; 
} 

ответ

0

Я думаю, вы можете упростить немного таким образом:

var baseFile = new File(openDialog()); //open base JPEG file 
var workFile = new File(openDialog()); //open work JPEG file 
var baseDoc = app.open(baseFile); 
var workDoc = app.open(workFile, undefined, true); 

workDoc.resizeImage(280, 280); 
var duplicated = workDoc.artLayers[0].duplicate(baseDoc, ElementPlacement.INSIDE); 
var Hoffset = (baseDoc.width - workDoc.width)/2; 
var Voffset = (baseDoc.height - workDoc.height)/2; 

app.activeDocument = baseDoc; 

duplicated.translate(Hoffset, Voffset); 

Главное здесь использует translate метод; однако вы также можете избежать создания функции createSO, используя 3-й аргумент app.open (то есть asSmartObject).

 Смежные вопросы

  • Нет связанных вопросов^_^