You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Photoshop脚本获取栅格化倾斜形状的边角坐标?

问题分析与解决方案

你的代码核心问题是使用了Layer.bounds属性,这个属性返回的是图层的轴对齐边界矩形——无论图层内的形状是否倾斜、变形,它都会生成一个与画布坐标轴完全平行的矩形框,所以拿到的四个点是这个大框的边角,而非倾斜形状本身的实际边角。

要获取栅格化图层中形状的真实边角,需要通过提取形状的轮廓路径来实现,具体步骤和代码如下:

实现思路

  1. 将栅格化图层的非透明区域转换为选区(选区对应形状的范围)
  2. 将选区转换为路径,路径的锚点就是形状的轮廓顶点
  3. 筛选路径中的角点(排除平滑锚点),得到形状的真实边角坐标

修正后的代码

var doc = app.activeDocument;
var selectedLayer = doc.activeLayer;

// 检查是否为栅格化图层(NORMAL类型)且可见
if (selectedLayer.kind === LayerKind.NORMAL && selectedLayer.visible) {
    try {
        // 1. 创建图层内容的选区(仅非透明区域)
        selectedLayer.createSelection(0, true, SelectionType.REPLACE, 0);
        
        // 2. 将选区转换为路径
        var tempPath = doc.paths.add();
        
        // 3. 提取路径中的角点坐标
        var cornerPoints = [];
        for (var i = 0; i < tempPath.subPathItems.length; i++) {
            var subPath = tempPath.subPathItems[i];
            for (var j = 0; j < subPath.pathPoints.length; j++) {
                var point = subPath.pathPoints[j];
                // 只保留角点(排除平滑/贝塞尔锚点)
                if (point.kind === PathPointKind.CORNERPOINT) {
                    cornerPoints.push([point.anchor[0].value, point.anchor[1].value]);
                }
            }
        }
        
        // 4. 输出结果
        if (cornerPoints.length > 0) {
            var resultText = "形状边角坐标:\n";
            cornerPoints.forEach(function(point, index) {
                resultText += "边角" + (index + 1) + ": " + point[0] + ", " + point[1] + "\n";
            });
            alert(resultText);
        } else {
            alert("未检测到形状边角");
        }
        
        // 5. 删除临时路径,避免污染文档
        tempPath.remove();
        
    } catch (e) {
        alert("处理出错:" + e.message);
        // 出错时清理临时路径
        if (typeof tempPath !== 'undefined') tempPath.remove();
    }
} else {
    alert("请选择可见的栅格化图层");
}

关键说明

  • createSelection():仅选中图层的非透明像素区域,确保选区完全匹配形状范围
  • PathPointKind.CORNERPOINT:筛选路径中的角点,排除平滑锚点(这类锚点是曲线的控制点,不是形状的边角)
  • 临时路径清理:处理完成后删除生成的路径,不影响原文档内容

内容的提问来源于stack exchange,提问作者devton3s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 22:25:17