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

bossrus

шибка умный, аднака
Сообщения
354
Благодарности
58
#1

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


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

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

_MBK_

Пикирующий бомбардировщик
10 лет на форуме
Сообщения
21 453
Благодарности
7 653
#2
Для начала определиться - а что собственно должен показывать пикер в полупрозрачной точке?
 

bossrus

шибка умный, аднака
Сообщения
354
Благодарности
58
#3
Для начала определиться - а что собственно должен показывать пикер в полупрозрачной точке?
не-не-не. использование пикера вовсе не обязательно. это просто лирическое вступление.
задача стоит именно определить наличие прозрачности именно в конкретной точке.

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

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

_MBK_

Пикирующий бомбардировщик
10 лет на форуме
Сообщения
21 453
Благодарности
7 653
#4
наличие прозрачности именно в конкретной точке
Зачем? Прозрачность разная бывает: текущего слоя, вообще отсутствие бэкграунда в данном месте?
Если определить конечную цель всего действия - это само собой будет ответом на топиковый вопрос
 

bossrus

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

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


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

 

_MBK_

Пикирующий бомбардировщик
10 лет на форуме
Сообщения
21 453
Благодарности
7 653
#6
если интересно, и это как-то поможет, то конечная цель этого всего такая: нужно выполнить проверку, и если в точке прозрачность, или 0 по всем цветам
Тогда, самый простой из всех способов - выделить пиксел и построить по нему хистограмму
 

Skvoznyak

12 лет на форуме
Сообщения
3 814
Благодарности
1 592
#8
а что гистограмма даст?
 

Skvoznyak

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

_MBK_

Пикирующий бомбардировщик
10 лет на форуме
Сообщения
21 453
Благодарности
7 653
#10
а код покажете? а то я как-то вообще не понял '))')
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

шибка умный, аднака
Сообщения
354
Благодарности
58
#11
вот как-то совсем легче не стало.
единственные 2 случая histogram, которые я нашёл в гайде относятся ко всему документу, либо к каналу. а вот чтобы к выделению — так таки нет.
или я просто не понял как это применять.
 

Skvoznyak

12 лет на форуме
Сообщения
3 814
Благодарности
1 592
#12
не, прозрачные как будто 255 считаются
 

Skvoznyak

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

Skvoznyak

12 лет на форуме
Сообщения
3 814
Благодарности
1 592
#14
в общем, не вижу смысла в вышеописанных действиях. намного лучше load selection -> transparency, а потом grow
 

_MBK_

Пикирующий бомбардировщик
10 лет на форуме
Сообщения
21 453
Благодарности
7 653
#15

Skvoznyak

12 лет на форуме
Сообщения
3 814
Благодарности
1 592
#16
да не возможно, а так и есть

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

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