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

如何用Extendscript将PS文档从32位转16位且不合并图层?

Photoshop脚本:32位转16位且保留图层的解决方案

直接设置activeDocument.bitsPerChannel = BitsPerChannelType.SIXTEEN;会自动拼合图层,这是该属性的默认行为,而你尝试的WITOUTMERGER/WithoutMerger并非BitsPerChannelType的合法属性,因此无效。

要在转换位深度时保留图层,需要通过调用Photoshop底层动作命令实现,以下是可行的JavaScript代码:

// 构建位深度转换的动作描述符
var depthDesc = new ActionDescriptor();
var channelRef = new ActionReference();
channelRef.putClass(charIDToTypeID("Chnl"));
depthDesc.putReference(charIDToTypeID("null"), channelRef);
// 指定转换为16位
depthDesc.putEnumerated(charIDToTypeID("Bth "), charIDToTypeID("Bth "), charIDToTypeID("16  "));
// 关键参数:设置为false以禁用图层合并
depthDesc.putBoolean(charIDToTypeID("Mrg "), false);

// 执行位深度转换命令
executeAction(charIDToTypeID("Mk  "), depthDesc, DialogModes.NO);

代码说明:

  • 使用ActionDescriptor和ActionReference直接调用Photoshop的内部命令,绕过了bitsPerChannel属性的自动拼合逻辑
  • charIDToTypeID用于转换Photoshop内部的字符ID为类型ID,确保跨版本兼容性
  • Mrg 参数设置为false是保留图层的核心,对应手动操作时的"不合并"选项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:25:09