[PS CS3 и ранее] как получить прозрачность нужной точки

bossrus

шибка умный, аднака
Топикстартер
12 лет на форуме
Сообщения
447
Реакции
74

Не по теме:
раз уж меня разбанили, получайте: :)
и да простит меня indesign, но речь пойдёт о photoshop


встала необходимость в скрипте, который определяет цвет нужных точек в документе. самостоятельные поиски привели меня к
Код:
activeDocument.colorSamplers.add([0,0]);
alert(activeDocument.colorSamplers[0].color.cmyk.cyan+","
 +activeDocument.colorSamplers[0].color.cmyk.magenta);
...
и всё бы было ничего, но! если область, куда тыркается самплер пустая (стоит прозрачность), то шоп радостно генерит ошибку.
конечно, я, как большой извращенец, сразу подумал об
Код:
try {} catch {}
но таки остатки благоразумия подсказывают мне, что использование "трая" — это не кошерно и противоречит религиозным догматам неплохокодера.

так вот таки вопрос — как определить, что в данной точке прозрачность без использования столь простого, заманчивого и, почти во всех смыслах, столь офигенного "трая"?
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Для начала определиться - а что собственно должен показывать пикер в полупрозрачной точке?
 

bossrus

шибка умный, аднака
Топикстартер
12 лет на форуме
Сообщения
447
Реакции
74
Для начала определиться - а что собственно должен показывать пикер в полупрозрачной точке?
не-не-не. использование пикера вовсе не обязательно. это просто лирическое вступление.
задача стоит именно определить наличие прозрачности именно в конкретной точке.

ну или сделать какую-то проверку на отсутствие цвета в пикере (точка пикера же таки создаётся).

а вообще значение пикера в прозрачной точке могло бы быть "none" или "undefined", например. а не ошибка с остановкой скрипта сразу как только появляется
Код:
activeDocument.colorSamplers[0].color
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
наличие прозрачности именно в конкретной точке
Зачем? Прозрачность разная бывает: текущего слоя, вообще отсутствие бэкграунда в данном месте?
Если определить конечную цель всего действия - это само собой будет ответом на топиковый вопрос
 

bossrus

шибка умный, аднака
Топикстартер
12 лет на форуме
Сообщения
447
Реакции
74
Зачем? Прозрачность разная бывает: текущего слоя, вообще отсутствие бэкграунда в данном месте?
ещё раз — определить в нужной точке есть прозрачность или нет. как приоритет. ну или если такого инструмента нет — то определить есть цвет или нет. в момент пикера слой включен всегда только один текущий. так что влияние других слоёв игнорируется.

если интересно, и это как-то поможет, то конечная цель этого всего такая: нужно выполнить проверку, и если в точке прозрачность, или 0 по всем цветам, то туда нужно ткнуть волшебной палочкой. если нет прозрачности и не ноль — запомнить это место как не отвечающее требованиям


Не по теме:
Если определить конечную цель всего действия - это само собой будет ответом на топиковый вопрос
определил конечную цель. ответом определение не стало '))'

 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
если интересно, и это как-то поможет, то конечная цель этого всего такая: нужно выполнить проверку, и если в точке прозрачность, или 0 по всем цветам
Тогда, самый простой из всех способов - выделить пиксел и построить по нему хистограмму
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
а что гистограмма даст?
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
если в точке прозрачность, или 0 по всем цветам, то туда нужно ткнуть волшебной палочкой

а например load selection -> layer transparency не пойдет? из скрипта по пикселям проходить - гиблое дело, очень долго
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
а код покажете? а то я как-то вообще не понял '))')
histogram array of 256
numbers (long)
Read-only. A histogram showing the number
of pixels at each color intensity level for the
composite channel.
а что гистограмма даст?
Ну по идее в такой хистограмме все элементы массива должны быть нулевые. Но это не точно, пробоовать надо
 

bossrus

шибка умный, аднака
Топикстартер
12 лет на форуме
Сообщения
447
Реакции
74
histogram array of 256
numbers (long)
вот как-то совсем легче не стало.
единственные 2 случая histogram, которые я нашёл в гайде относятся ко всему документу, либо к каналу. а вот чтобы к выделению — так таки нет.
или я просто не понял как это применять.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
не, прозрачные как будто 255 считаются
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
вот как-то совсем легче не стало.
единственные 2 случая histogram, которые я нашёл в гайде относятся ко всему документу, либо к каналу. а вот чтобы к выделению — так таки нет.
или я просто не понял как это применять.

когда есть выделение - берется гистограмма выделенного
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
в общем, не вижу смысла в вышеописанных действиях. намного лучше load selection -> transparency, а потом grow
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
да не возможно, а так и есть

вот гистограмма прозрачного слоя
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40768
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835

bossrus

шибка умный, аднака
Топикстартер
12 лет на форуме
Сообщения
447
Реакции
74
в общем, не вижу смысла в вышеописанных действиях. намного лучше load selection -> transparency, а потом grow
так мне нужно не выделить слой по прозрачности, а узнать конкретная точка белая, прозрачная или (не белая и не прозрачная).
вот гистограмма прозрачного слоя
а код можно как вы это получили?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835