2013-09-04 2 views
1

Я пишу скрипт Photoshop в extendscript/javascript, и я пытаюсь проверить, что документ использует только один цвет (плюс прозрачность) , Я бы хотел изменить режим документа на индексированный цвет, а затем получить значения в таблице цветов.Использование 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 
} 

ответ

0

xbytor написал пару скриптов для доступа к таблицам цветов. Этот link может пригодиться вам.

+0

Я просмотрел примеры из xbytor, но не видел, как получить доступ к таблице цветов в Photoshop, не выписывая временный GIF. Я закончил использовать гистограмму. Первым шагом было дублирование документа. В дубликате скройте другие слои/группы. Слейте видимые слои. Выберите непрозрачные пиксели. Проверьте значения в гистограмме для каждого канала. Если в гистограмме больше, чем 0, в слое более одного цвета. –

+0

Если бы вы решили записать файл .act palete (очевидно, что его трудно получить внутренне). Они довольно прямолинейны, когда файлы идут. –