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

  • Автор темы Автор темы bossrus
  • Дата начала Дата начала
так мне нужно не выделить слой по прозрачности, а узнать конкретная точка белая, прозрачная или (не белая и не прозрачная).

конечная цель этого какая? тыкнуть во все прозрачные magic wand?
все белые можно выделить color range. все прозрачные load selection -> transparency. а после этого уже смотреть что выделено, что нет. либо сделать нужный selection и его модифицировать - grow и т.п.
 
Пожалуй, самый простой технически способ - все таки через try-catch
Но корректно это будет выглядеть так:
Код:
var a=0;
try
{
 activeDocument.selection.copy();
} catch(e) {a=e.number;}
if (a==-25570)
{        //Выделена прозрачная область
}
else
{       //Выделение непусто 
}
 
конечная цель этого какая? тыкнуть во все прозрачные magic wand?
не во все. есть набор точек, куда нужно тыкать, если они белые или прозрачные, и не нужно тыкать, а нужно записать что оне не такие, если там ни белого, ни прозрачного.

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

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

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

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

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

 

Не по теме:

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


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

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

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

 
кстати, как вы палочкой вообще в скрипте собираетесь пользоваться? :) не то чтобы это было невозможно, но тем не менее
элементарно
Код:
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 );
 
помимо 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.
 

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

 
помимо 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 точек волшебной палочкой.