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

Skvoznyak

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

конечная цель этого какая? тыкнуть во все прозрачные magic wand?
все белые можно выделить color range. все прозрачные load selection -> transparency. а после этого уже смотреть что выделено, что нет. либо сделать нужный selection и его модифицировать - grow и т.п.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Пожалуй, самый простой технически способ - все таки через try-catch
Но корректно это будет выглядеть так:
Код:
var a=0;
try
{
 activeDocument.selection.copy();
} catch(e) {a=e.number;}
if (a==-25570)
{        //Выделена прозрачная область
}
else
{       //Выделение непусто 
}
 

bossrus

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

а при загрузке прозрачности из слоя плотность цвета меньше 5% вообще игнорируется и считается прозрачной.

на слое нарисован градиентный прямоугольник, уходящий в прозрачность. вот что выделяется при загрузке прозрачности из слоя:
Screen shot 2018-10-23 at 13.23.45.png
 

Skvoznyak

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

bossrus

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

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
так это элементарно

>не во все. есть набор точек, куда нужно тыкать, если они белые или прозрачные, и не нужно тыкать, а нужно записать что оне не такие, если там ни белого, ни прозрачного.

выделяем белые, потом добавляем к выделению прозрачные. все остальные - не белые и не прозрачные. вместо тыкания magic wand - selection.grow() с нужным tolerance
 

_MBK_

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

bossrus

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

Не по теме:
Пикер тоже меняет, вдобавок, в заявленной топиковой версии он еще не реализован
э-э-э... ну значит меня глючит, что я тестирую работу в ЦС3 шопе :)
код из первого поста таки выполняется именно в цс3.
и какую память меняет пикер?

 

Skvoznyak

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

Не по теме:

э-э-э... ну значит меня глючит, что я тестирую работу в ЦС3 шопе :)
код из первого поста таки выполняется именно в цс3.
и какую память меняет пикер?


пикер меняет цвет app.backgroundColor или app.foregroundColor - тот, что в данный момент активный

но sampler - это не пикер. разные инструменты
 

Skvoznyak

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

Skvoznyak

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

bossrus

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

Не по теме:
пикер меняет цвет app.backgroundColor или app.foregroundColor - тот, что в данный момент активный
что легко решается сохранением текущих значений в переменную. память так легко не сохранишь. там может быть что угодно вплоть до модельки из 3D studio :)
но sampler - это не пикер. разные инструменты
поэтому я и использую семплер, который всё это время называл пикером, ибо в принципе при использовании самплера в файле пикер и появляется '))')

 

bossrus

шибка умный, аднака
Топикстартер
12 лет на форуме
Сообщения
447
Реакции
74
кстати, как вы палочкой вообще в скрипте собираетесь пользоваться? :) не то чтобы это было невозможно, но тем не менее
элементарно
Код:
var id211 = charIDToTypeID( "AddT" );
                var desc35 = new ActionDescriptor();
                var id212 = charIDToTypeID( "null" );
                var ref16 = new ActionReference();
                var id213 = charIDToTypeID( "Chnl" );
                var id214 = charIDToTypeID( "fsel" );
                ref16.putProperty( id213, id214 );
                desc35.putReference( id212, ref16 );
                var id215 = charIDToTypeID( "T   " );
                var desc36 = new ActionDescriptor();
                var id216 = charIDToTypeID( "Hrzn" );
                var id217 = charIDToTypeID( "#Pxl" );
                desc36.putUnitDouble( id216, id217, x-1 );
                var id218 = charIDToTypeID( "Vrtc" );
                var id219 = charIDToTypeID( "#Pxl" );
                desc36.putUnitDouble( id218, id219, 0 );
                var id220 = charIDToTypeID( "Pnt " );
                desc35.putObject( id215, id220, desc36 );
                var id221 = charIDToTypeID( "Tlrn" );
                desc35.putInteger( id221, 0 );
                var id222 = charIDToTypeID( "AntA" );
                desc35.putBoolean( id222, false );
                    executeAction( id211, desc35, DialogModes.NO );
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
помимо grow есть еще similar кстати

Selection.similar (tolerance:int, antiAlias: Boolean )
Adobe Photoshop CC 2015.5 Object Library
Grows the selection to include pixels throughout the image falling within the tolerance range.
tolerance: Data Type: int
The tolerance range. Range: 0 to 255.
antiAlias: Data Type: Boolean
If true, anti-aliasing is used.
 

bossrus

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

Не по теме:
в смысле не умеет? а что же он делает?
он расширяет текущее выделение.
нельзя сделать выделение из одной точки, потом добавить выделение из другой и так далее.

 

bossrus

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

Selection.similar (tolerance:int, antiAlias: Boolean )
Adobe Photoshop CC 2015.5 Object Library
Grows the selection to include pixels throughout the image falling within the tolerance range.
tolerance: Data Type: int
The tolerance range. Range: 0 to 255.
antiAlias: Data Type: Boolean
If true, anti-aliasing is used.
и это тоже так же неприменимо, когда нужно сэмулировать тыкание в 12 точек волшебной палочкой.