Эллиптическая область выделения, затем заливка цветом в Photoshop с использованием Javascript

В основном то, что я пытаюсь сделать, это создать точки на конкретном месте. Точки нужно поставить на 1/3 каждого края верхней части изображения и затем по одной в центре.

Использование инструмента «Кисть» также будет работать, но я не могу найти ссылку на то, как установить координаты того, где будет использоваться кисть.

Пока я смог только выяснить, как заполнить выделение

function fillSelection()
{
    var doc = app.activeDocument;
    var dotColor = new SolidColor;
    dotColor.rgb.hexValue = '000000';
    var newLayer = doc.artLayers.add();
    doc.selection.fill(dotColor);
    doc.selection.deselect();
}

Вот как это должно выглядеть: Пример

Как видите, я не эксперт в этом, поэтому ваша помощь очень ценится. Заранее спасибо.


person Raybong    schedule 06.05.2016    source источник


Ответы (1)


Вы можете создать выделение для ваших точек следующим образом:

function selectIt(top, left, right, bottom)
{
    var id1 = charIDToTypeID( "setd" );
    var desc1 = new ActionDescriptor();
    var id2 = charIDToTypeID( "null" );
    var ref1 = new ActionReference();
    var id3 = charIDToTypeID( "Chnl" );
    var id4 = charIDToTypeID( "fsel" );
    ref1.putProperty( id3, id4 );
    desc1.putReference( id2, ref1 );
    var id5 = charIDToTypeID( "T   " );
    var desc2 = new ActionDescriptor();
    var id6 = charIDToTypeID( "Top " );
    var id7 = charIDToTypeID( "#Pxl" );
    desc2.putUnitDouble( id6, id7, top ); //top
    var id8 = charIDToTypeID( "Left" );
    var id9 = charIDToTypeID( "#Pxl" );
    desc2.putUnitDouble( id8, id9, left ); //left
    var id10 = charIDToTypeID( "Btom" );
    var id11 = charIDToTypeID( "#Pxl" );
    desc2.putUnitDouble( id10, id11, bottom ); //bottom
    var id12 = charIDToTypeID( "Rght" );
    var id13 = charIDToTypeID( "#Pxl" );
    desc2.putUnitDouble( id12, id13, right ); //right

    var id14 = charIDToTypeID( "Elps" );
    desc1.putObject( id5, id14, desc2 );
    var id15 = charIDToTypeID( "AntA" );
    desc1.putBoolean( id15, true );

    executeAction( id1, desc1, DialogModes.NO );
}

Вы, вероятно, захотите изменить приведенную выше функцию и просто предоставить параметры X, Y и радиус для функции вместо пределов эллипса (верхний, нижний, левый и правый).

Также, возможно, стоит поставить дополнительную отмену выбора в начале функции на тот случай, если вы уже что-то выбрали. ;)

person Mr Mystery Guest    schedule 16.05.2016