【发布时间】: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
}
【问题讨论】: