Photoshop脚本编程:将图像移动到位置x,y

10

我有一个由变量NewLayer引用的活动ArtLayer,我想把它移动到画布上的绝对位置x,y。

我已经谷歌了几个小时,但没有任何结果。请问有人可以给个例子吗?

// 谢谢。

1个回答

28

在阅读了一些 API 并进行搜索后,我得出结论,仅能使用增量移动来移动一个图层。

我编写了这个小函数以将图层定位到绝对位置。希望这对下一个有相同问题的读者有所帮助...

//******************************************
// MOVE LAYER TO
// Author: Max Kielland
//
// Moves layer fLayer to the absolute
// position fX,fY. The unit of fX and fY are
// the same as the ruler setting. 

function MoveLayerTo(fLayer,fX,fY) {

  var Position = fLayer.bounds;
  Position[0] = fX - Position[0];
  Position[1] = fY - Position[1];

  fLayer.translate(-Position[0],-Position[1]);
}

3
要实现这个,打开一个文本文件,将代码粘贴进去,另存为.jsx格式,然后将该文件放入Photoshop脚本文件夹中:(C:\Program Files\Adobe\Adobe Photoshop CS6 (64 Bit)\Presets\Scripts) 重启Photoshop,在"文件"菜单下找到"脚本"即可使用。 - Kalaschnik
3
@Steve 你自己试过这个吗?这是一个需要3个参数的函数,不能直接从PS中作为单个脚本运行。你需要将该函数复制到你 自己的 脚本中,并使用有效的参数调用它。 - Max Kielland
注意:不要使用 as("px")。Photoshop 以一种奇怪的方式处理单位值:100 - UnitValue("5px") 的结果是 -95px。0 + UnitValue("5px") 的结果是 5px。 - Tertium
除了@Tertium的评论之外,要获取UnitValue的值,您可以使用"value"属性。例如,对于ArtLayer对象,您可以使用layer.bounds [0]来了解其左上角的X坐标,但它将是一个“UnitValue”,因此要获取不带单位(px,cm)的数字值,请使用layer.bounds [0] .value。 - José Manuel Blasco
@MaxKielland的回答需要做一个小免责声明:翻译将使用左上角作为“锚点”,因此fX和fY值将是左上角目标点,而不是图层中心。如果您希望fX和fY成为图层目标中心,则需要计算图层的宽度和高度,将它们除以2并加到Position [0]和Position [1]上。 - José Manuel Blasco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接