Photoshop脚本 - 如何获取图层集(组)的可见部分的边界?

时间:2016-01-29 20:55:19

标签: javascript photoshop layer bounds photoshop-script

我正在编写一个简单的Photoshop脚本,我需要活动图层可见部分的边界(即应用蒙版后的边界)。

值得庆幸的是, ArtLayer.bounds 属性为您提供了任何给定图层的属性。

但是,如果活动层实际上是一个组(图层集),那么事情会变得复杂。

首先,群组的蒙版效果完全被忽略。 其次,层的可见性状态也被忽略。

所以我的问题是:如何获得图层集(组)的可见部分的边界?

或者至少,如何获得群组面具的界限?如果我有,我可以遍历所有群组的可见图层界限并将所有这些与蒙版界限相交以获得我需要的东西。

我没有找到reference guide中可能给我其中任何一个的任何方法或属性。

任何帮助将不胜感激! 谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个hacky解决方案,它创建组的临时副本,合并它,获取其边界,删除它并返回到将处理不可见层的组

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>CompareBet</title>
</head>
<body>
<%
ArrayList<String> sortedDomainList= request.getAttribute("d");
for(String domain:sortedDomainList){
 %>
 <h1> <%= domain %> </h1>

<% } %>



</body>
</html>

现在如果你想处理掩码,脚本会变得更长一点:

var mfDoc = activeDocument;
var mflayer = activeDocument.activeLayer; // currently active layer
var mfnewdLayer = mfDoc.activeLayer.duplicate(); // Dublicates active layer or group (creating a temp layer)
mfDoc.activeLayer = mfnewdLayer; // sets the temp layer as the active layer
mfnewdLayer.merge(); // merges it, this leaves only visible layers

var mfmlayer = activeDocument.activeLayer; //Grab the currently selected layer
var mfheight = mfmlayer.bounds[2]-mfmlayer.bounds[0]; //Grab the H value
var mfwidth = mfmlayer.bounds[3]-mfmlayer.bounds[1]; //Grab the W value

mfmlayer.remove(); // delete the temp layer
mfDoc.activeLayer = mflayer; // gets back to the layer that was active at the begining
mflayer.name = mfheight + " x " + mfwidth // set it's name to the dimintions we now have

致谢:整个面具剧本的处理来自 Flatten All Masks.jsx LeZuse