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

bossrus

шибка умный, аднака
Топикстартер
Сообщения
375
Оценка реакций
58

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


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

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

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
24 078
Оценка реакций
8 292
Для начала определиться - а что собственно должен показывать пикер в полупрозрачной точке?
 

bossrus

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

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

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

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
24 078
Оценка реакций
8 292
наличие прозрачности именно в конкретной точке
Зачем? Прозрачность разная бывает: текущего слоя, вообще отсутствие бэкграунда в данном месте?
Если определить конечную цель всего действия - это само собой будет ответом на топиковый вопрос
 

bossrus

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

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


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

 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
24 078
Оценка реакций
8 292
если интересно, и это как-то поможет, то конечная цель этого всего такая: нужно выполнить проверку, и если в точке прозрачность, или 0 по всем цветам
Тогда, самый простой из всех способов - выделить пиксел и построить по нему хистограмму
 

Skvoznyak

12 лет на форуме
Сообщения
3 912
Оценка реакций
1 633
а что гистограмма даст?
 

Skvoznyak

12 лет на форуме
Сообщения
3 912
Оценка реакций
1 633
если в точке прозрачность, или 0 по всем цветам, то туда нужно ткнуть волшебной палочкой
а например load selection -> layer transparency не пойдет? из скрипта по пикселям проходить - гиблое дело, очень долго
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
24 078
Оценка реакций
8 292
а код покажете? а то я как-то вообще не понял '))')
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

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

Skvoznyak

12 лет на форуме
Сообщения
3 912
Оценка реакций
1 633
не, прозрачные как будто 255 считаются
 

Skvoznyak

12 лет на форуме
Сообщения
3 912
Оценка реакций
1 633
вот как-то совсем легче не стало.
единственные 2 случая histogram, которые я нашёл в гайде относятся ко всему документу, либо к каналу. а вот чтобы к выделению — так таки нет.
или я просто не понял как это применять.
когда есть выделение - берется гистограмма выделенного
 

Skvoznyak

12 лет на форуме
Сообщения
3 912
Оценка реакций
1 633
в общем, не вижу смысла в вышеописанных действиях. намного лучше load selection -> transparency, а потом grow
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
24 078
Оценка реакций
8 292

Skvoznyak

12 лет на форуме
Сообщения
3 912
Оценка реакций
1 633
да не возможно, а так и есть

вот гистограмма прозрачного слоя
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
 

bossrus

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