Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将智能对象层中心与画布对齐?_Javascript_Photoshop Script - Fatal编程技术网

Javascript 如何将智能对象层中心与画布对齐?

Javascript 如何将智能对象层中心与画布对齐?,javascript,photoshop-script,Javascript,Photoshop Script,我整天都在谷歌上搜索,想找到一种方法,通过脚本将转换为智能对象中心的层与画布对齐,但到目前为止还没有找到解决方案。我最终得到了下面的代码,但它不起作用。有人能帮忙吗 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

我整天都在谷歌上搜索,想找到一种方法,通过脚本将转换为智能对象中心的层与画布对齐,但到目前为止还没有找到解决方案。我最终得到了下面的代码,但它不起作用。有人能帮忙吗

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;
}

我想你可以这样简化一下:

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);
这里的重点是使用翻译方法;但是,您也可以避免使用app.open的第三个参数(即asSmartObject)创建createSO函数