使用扩展脚本(javascript)如何从 Photoshop 颜色表中获取颜色值

Posted

技术标签:

【中文标题】使用扩展脚本(javascript)如何从 Photoshop 颜色表中获取颜色值【英文标题】:Using extendscript (javascript) how can I get the color values from the Photoshop color table 【发布时间】:2013-09-07 08:18:16 【问题描述】:

我正在用extendscript/javascript 编写一个Photoshop 脚本,并且我正在尝试验证该文档是否只使用一种颜色(加上透明度)。我想做的是将文档模式更改为索引颜色,然后获取颜色表中的值。

我已成功将文档模式更改为索引颜色,但不知道如何访问颜色表或其中的颜色值。

我的可行替代方法是使用 colorSampler 来比较每个像素的值,但这可能需要几分钟才能在较大的文档上运行,而且速度是这个项目的一个问题。

请告诉我是否有办法访问颜色表,或者您是否发现了减少运行此功能所需时间的方法。

function sample_color(doc, sample_rate) 
    var status = 'PASS'
    var color_sampler = doc.colorSamplers.add([0,0])
    var color_val = false  //first (and hopefully only) color value in the document
    var broke = false
    for (x=1; x < doc.width; x+=sample_rate)
        if (broke)
            break
        
        for (y=1; y < doc.height; y+=sample_rate)
            color_sampler.move([UnitValue(x, 'px'), UnitValue(y, 'px')])
            try
                var color = color_sampler.color  //color of the current pixel
             catch(e) 
                var color = false  //color_sampler.color fails if the pixel is transparent
            
            if (color != false)
                if (color_val != false)
                    if (!color.isEqual(color_val))
                        status = 'FAIL'
                        broke = true
                        break
                    
                 else 
                    color_val = color
                
            
        
    
    color_sampler.remove()
    return status

【问题讨论】:

【参考方案1】:

xbytor 编写了几个用于访问颜色表的脚本。这个link 可能对你有用。

【讨论】:

我浏览了 xbytor 的示例,但没有看到如何在不写出临时 GIF 的情况下访问 Photoshop 中的颜色表。我最终使用了直方图。第一步是复制文件。在副本中,隐藏其他图层/组。合并可见层。选择不透明的像素。检查每个通道的直方图中的值。如果直方图中有多个大于 0 的值,则说明图层中存在多个颜色。 您是否想过改为写出一个 .act 调色板文件(显然很难在内部访问它)它们在文件中非常简单。

以上是关于使用扩展脚本(javascript)如何从 Photoshop 颜色表中获取颜色值的主要内容,如果未能解决你的问题,请参考以下文章

Chrome 扩展如何将数据从内容脚本发送到 popup.html

从脚本安装 Google Chrome 扩展

为啥 rails 对咖啡脚本文件使用 .js.coffee 扩展名,因为它们无论如何都不能包含 JavaScript 代码?

如何从JavaScript中引用属于Chrome扩展程序的文件

pho

如何在一个脚本中监视javascript函数,该脚本被注入jsdom用于测试目的?