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

  • Автор темы Автор темы bossrus
  • Дата начала Дата начала

Не по теме:

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


можно 'hz'

selection.select([[0,0],[1,1],[0,1],[1,0]]);
selection.select([[2,2],[1,1],[2,1],[1,2]],SelectionType.EXTEND);
selection.grow();
 
Последнее редактирование:
как?
напишите код, где скрипт тыкает в одну прозрачную точку, потом тыкает во вторую точку, которая белая (в режиме добавления выделения!), потом в третью белую (в режиме добавления выделения!), потом в четвёртую прозрачную (в режиме добавления выделения!)... и всё это grow-ом.
мне просто интересно посмотреть.
тем более что всё равно нужно будет определить есть в конкретной точке белое или прозрачность, или нет. потому что если нет — то тоже нужно выполнить другое действие
 
я написал выше все что надо. проверить цвет - сэмплером. режим добавления выделения! - SelectionType.EXTEND
grow() в конце сделать, когда все точки выделены
 
  • Спасибо
Реакции: bossrus
По мне, так все это закат солнца вручную, быстрее и проще тыкать и проверять код ошибки
Код:
var a=0;
try
{
 activeDocument.colorSamplers.add([10,10]);
 
} catch(e) {a=e.number;}

if (a==-25920)
{       
}
else
{       
    alert(activeDocument.colorSamplers[0].color.cmyk.cyan+","
   +activeDocument.colorSamplers[0].color.cmyk.magenta);
}
 
grow() в конце сделать, когда все точки выделены
хорошая идея. мне нравится.

я написал выше все что надо. проверить цвет - сэмплером.
и вновь мы вернулись к первому посту. как обойтись без трай-кетча :)


Не по теме:
решая проблему трай-кетча параллельно убрали ненативное применение волшебной палочки, заменив на grow. но проблему пока не решили :)
 
не будет там никакой ошибки в таком коде ) сэмплер куда угодно можно ставить
 
По мне, так все это закат солнца вручную, быстрее и проще тыкать и проверять код ошибки
не совсем так. самплер таки вполне ставится и на прозрачное. и можно даже вызвать его координаты, и всё будет ок. там обращение именно к полю "цвет" вызывает ошибку. я сейчас сделал
Код:
activeDocument.layers[q].visible = true;
activeDocument.colorSamplers.removeAll();
activeDocument.colorSamplers.add([0,0]);
try
    {
    result+="\r"+activeDocument.layers[q].name+" xxx "+activeDocument.colorSamplers[0].color.cmyk.magenta;
    } catch (error)
    {result+="\r"+activeDocument.layers[q].name+" XXXX "+error;}
activeDocument.layers[q].visible = false;
так работает, понятное дело. но от использования трай-кетча свербит :)
 
хотя вообще опять же решается через selection
делаем селекшн прозрачного
конвертим в альфа канал
и в альфа канале уже спокойно смотрим

но, как правильно заметил Михаил, это ненужное усложнение
 

Не по теме:
C++ & Photoshop SDK в помощь
писать плагин, где достаточно скрипта.
делаем селекшн прозрачного
конвертим в альфа канал
и в альфа канале уже спокойно смотрим
мьсе знает толк в извращениях '))'))

 
ну вам не угодишь, я умываю руки
 
  • Спасибо
Реакции: ch_alex
Код:
var a=0;
try
{
 activeDocument.colorSamplers.add([10,10]);
 
} catch(e) {a=e.number;}
alert(a);
upload_2018-10-23_14-10-38.png
 
собственно, такая ошибка возникает когда координаты сэмплера за пределами границ изображения. смысл?
 
Вообще да, странно, ошибка плавающая - сперва возникала на любой сэмплер, чтото неуловимое сделал - теперь уже код нулевой зато ошибка на алерте 'hmmm'
 
Вообще да, странно, ошибка плавающая - сперва возникала на любой сэмплер, чтото неуловимое сделал - теперь уже код нулевой зато ошибка на алерте 'hmmm'
может уже количество семплов многоватое? у меня на цс3 больше 4 или 5 не принимает.
 
скрипт, меняющий содержание памяти — плохой скрипт. в памяти может быть что-то важное. не надо так
Ок, не нравится copy, можно делать какое нибудь бессмысленное действие, не изменяющее документ, например, яркость/контраст с нулевым параметром или инвертировать выбранную область (если сработает то еще раз инвертировать)
 
Ок, не нравится copy, можно делать какое нибудь бессмысленное действие, не изменяющее документ
либо, сделать осмысленное действие. как раз то, что нужно по алгоритму.
Код:
try
  {
  colorSum = activeDocument.colorSamplers[0].color.gray.gray;
  } catch (er)
  {
  trans=true;
  }
и вот всё, что нужно — сделано. если транс = тру, значит прозрачность. а если нет, то в колорсум будет циферка. и если она не 0 — значит тама не белое.
бритва Оккама, аднака