如何通过Photoshop Javascript获取图层的绘制区域尺寸(非画布/图像尺寸)?
获取Photoshop图层绘制区域尺寸的JS脚本方案
嘿,这个问题我刚好研究过!要获取Photoshop图层的实际绘制区域(也就是你图里显示的非透明像素边界尺寸),其实可以通过图层的bounds属性来实现,下面给你详细拆解:
首先明确:Photoshop JS API里,**普通像素图层(ArtLayer)**的bounds属性返回的就是包含图层所有非透明像素的最小矩形边界,这正是你要的「绘制区域」尺寸。这个属性返回一个包含四个值的数组:[左边界, 上边界, 右边界, 下边界],通过计算右-左、底-顶就能得到宽度和高度。
示例脚本
// 获取当前活动文档 var activeDoc = app.activeDocument; // 确保当前有选中的图层 if (activeDoc.activeLayer) { var targetLayer = activeDoc.activeLayer; // 仅处理普通像素图层(调整图层、填充图层等无实际像素的图层不适用) if (targetLayer.typename === "ArtLayer") { // 获取图层边界数组 var layerBounds = targetLayer.bounds; // 计算绘制区域的宽高 var drawAreaWidth = layerBounds[2] - layerBounds[0]; var drawAreaHeight = layerBounds[3] - layerBounds[1]; // 输出结果(你可以替换成自己的后续操作) alert(`绘制区域尺寸:\n宽度:${drawAreaWidth}px\n高度:${drawAreaHeight}px`); } else { alert("当前选中的不是普通像素图层,无法获取绘制区域尺寸!"); } } else { alert("文档中没有可选中的图层!"); }
关键细节说明
bounds属性返回的是UnitValue类型数值,默认和文档单位保持一致(比如文档用厘米的话,返回厘米值),如果需要强制转成像素,可以用as('px')方法,比如:drawAreaWidth = (layerBounds[2] - layerBounds[0]).as('px')- 对于文字图层,
bounds会返回文字的实际排版边界;对于智能对象图层,返回的是智能对象内容的边界,这些都符合「绘制区域」的需求 - 如果你需要排除图层样式(比如投影、外发光)的影响,可以先执行
targetLayer.applyStyle("Default")恢复默认样式再获取bounds,不过这会修改图层样式,操作前记得备份
内容的提问来源于stack exchange,提问作者SmIqbal
相关产品推荐
相关产品推荐

