如何在Photoshop JSX脚本中创建透明色用于填充操作
解决Photoshop JSX脚本填充透明背景色的问题
方法1:将8位HEX颜色转换为带Alpha的SolidColor
SolidColor本身支持设置alpha通道,只是rgb.hexValue仅接受6位不带透明度的HEX值。你可以把8位HEX(格式如#RRGGBBAA)拆分为颜色部分和透明度部分,手动赋值:
// 假设options.bgColor是8位HEX,比如"#FFFFFF00"(白色完全透明) var bgHex = options.bgColor.replace("#", ""); var rgbHex = bgHex.substring(0, 6); var alphaHex = bgHex.substring(6, 8); // 创建SolidColor并设置颜色和透明度 var bgColor = new SolidColor(); bgColor.rgb.hexValue = rgbHex; // 将两位十六进制Alpha转换为0-1的小数(Photoshop的alpha用0-1表示) bgColor.alpha = parseInt(alphaHex, 16) / 255; // 设置背景色 app.backgroundColor = bgColor; // 填充选区 app.activeDocument.selection.fill(bgColor);
方法2:直接填充完全透明色
如果只需填充完全透明的区域,不需要指定底色,有两种简洁方式:
方式A:创建Alpha为0的SolidColor
var transparentColor = new SolidColor(); transparentColor.rgb.hexValue = "FFFFFF"; // 颜色不影响,alpha设为0即可 transparentColor.alpha = 0; app.activeDocument.selection.fill(transparentColor);
方式B:用FillOptions设置填充不透明度
var fillOpts = new FillOptions(); fillOpts.opacity = 0; // 完全透明 fillOpts.blendMode = BlendMode.NORMAL; // 用前景色填充(前景色不影响,因为opacity为0) app.activeDocument.selection.fill(app.foregroundColor, fillOpts);
注意事项
- Photoshop的
SolidColor.alpha属性取值范围是0(完全透明)到1(完全不透明),并非0-255,所以需要把十六进制的alpha值转换为0-1的小数。 - 如果当前文档没有Alpha通道,填充透明色前需要先添加:
app.activeDocument.channels.add();
内容的提问来源于stack exchange,提问作者Horkos
相关产品推荐
相关产品推荐

