Photoshop 脚本获取实体填充图层的颜色?

发布于 2024-08-26 00:59:56 字数 125 浏览 5 评论 0原文

我正在尝试编写一个 Photoshop jsx 脚本来从 PSD 模板中提取颜色值。颜色被定义为单独的填充层,我希望能够循环并创建 {layer_name: #hex_color} 值的哈希值。我没有找到任何有关读取填充层颜色值的文档。

I'm trying to write a Photoshop jsx script for extracting color values from a PSD template. The colors are defined as separate fill layers that I'd like to be able to loop through and create a hash of {layer_name: #hex_color} values. I'm not finding any documentation on reading the color value of the fill layer.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

最笨的告白 2024-09-02 00:59:56

如果活动图层是一个solidFill图层,这将返回它的RGB值:

var srcDoc = app.activeDocument;

if (srcDoc.activeLayer.kind == LayerKind.SOLIDFILL) 
{
  var mySolidFillcol = get_solid_fill_colour();
  alert(mySolidFillcol); //RGB
}

function get_solid_fill_colour()
{
  var r = new ActionReference(); 
  r.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); 
  var d = executeActionGet(r);
  var adjList = d.getList(stringIDToTypeID("adjustment")); 
  var adjDesc = adjList.getObjectValue(0); 
  var colDesc = adjDesc.getObjectValue(stringIDToTypeID("color")); 
  var col = new SolidColor(); 
  col.rgb.red   = colDesc.getDouble(charIDToTypeID("Rd  ")); 
  col.rgb.green = colDesc.getDouble(charIDToTypeID("Grn ")); 
  col.rgb.blue  = colDesc.getDouble(charIDToTypeID("Bl  "));
  return [col.rgb.red, col.rgb.green, col.rgb.blue];
}

This will return the RGB values of the active layer if it's a solidFill layer:

var srcDoc = app.activeDocument;

if (srcDoc.activeLayer.kind == LayerKind.SOLIDFILL) 
{
  var mySolidFillcol = get_solid_fill_colour();
  alert(mySolidFillcol); //RGB
}

function get_solid_fill_colour()
{
  var r = new ActionReference(); 
  r.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); 
  var d = executeActionGet(r);
  var adjList = d.getList(stringIDToTypeID("adjustment")); 
  var adjDesc = adjList.getObjectValue(0); 
  var colDesc = adjDesc.getObjectValue(stringIDToTypeID("color")); 
  var col = new SolidColor(); 
  col.rgb.red   = colDesc.getDouble(charIDToTypeID("Rd  ")); 
  col.rgb.green = colDesc.getDouble(charIDToTypeID("Grn ")); 
  col.rgb.blue  = colDesc.getDouble(charIDToTypeID("Bl  "));
  return [col.rgb.red, col.rgb.green, col.rgb.blue];
}
樱娆 2024-09-02 00:59:56

我在此线程上找到了答案。

I found my answer on this thread.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文