Skip to main content
Inspiring
June 22, 2023
Beantwortet

PS Javascript get brig&contrast values - no data?

  • June 22, 2023
  • 1 Antwort
  • 525 Ansichten

Hey

 

Running this :

var ref = new ActionReference();
ref.putEnumerated(charIDToTypeID("AdjL"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
var desc = executeActionGet(ref);
var data = desc.getList(stringIDToTypeID("adjustment")).getObjectValue(0).getData(stringIDToTypeID("legacyContentData"));

var Brightness= getShortIntFromData(data, 0),
var Contrast= getShortIntFromData(data, 2),
var UseLegacy= (getShortIntFromData(data, 4)) ? 1 : 0


If the bri&contrast is set to Use Legacy = I get all data

But if its "new" then I can't get any data no matter what I do.

Any idea, any1 ?

 

Regards
Dariusz

Dieses Thema wurde für Antworten geschlossen.
Beste Antwort von r-bin

Try thia

 

function get_contrast_desc(id)
    {
    try {
        var r = new ActionReference();
        var d = new ActionDescriptor();

        r.putProperty(stringIDToTypeID("property"), stringIDToTypeID("json"));
        r.putEnumerated(stringIDToTypeID("document"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
        d.putReference(stringIDToTypeID("null"), r);

        d.putInteger(stringIDToTypeID("layerID"), id);
        d.putBoolean(stringIDToTypeID("layerInfo"), true);

        d.putBoolean(stringIDToTypeID( "includeAncestors" ), false);

        eval("var json="+executeAction(stringIDToTypeID("get"), d, DialogModes.NO).getString(stringIDToTypeID("json")));

        var d = new ActionDescriptor();

        if (!json.layers) return d;
        if (json.layers.length != 1) return d;
        if (json.layers[0].id != id) return d;

        var adj = json.layers[0].adjustment;

        if (!adj) return d;

        if (adj.brightness != undefined) d.putInteger(stringIDToTypeID("brightness"), adj.brightness);
        if (adj.center     != undefined) d.putInteger(stringIDToTypeID("center"),     adj.center);
        if (adj.useLegacy  != undefined) d.putBoolean(stringIDToTypeID("useLegacy"),  adj.useLegacy);

        return d;
        }
    catch (e) { throw(e); }
    }

1 Antwort

r-binAntwort
Legend
June 22, 2023

Try thia

 

function get_contrast_desc(id)
    {
    try {
        var r = new ActionReference();
        var d = new ActionDescriptor();

        r.putProperty(stringIDToTypeID("property"), stringIDToTypeID("json"));
        r.putEnumerated(stringIDToTypeID("document"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
        d.putReference(stringIDToTypeID("null"), r);

        d.putInteger(stringIDToTypeID("layerID"), id);
        d.putBoolean(stringIDToTypeID("layerInfo"), true);

        d.putBoolean(stringIDToTypeID( "includeAncestors" ), false);

        eval("var json="+executeAction(stringIDToTypeID("get"), d, DialogModes.NO).getString(stringIDToTypeID("json")));

        var d = new ActionDescriptor();

        if (!json.layers) return d;
        if (json.layers.length != 1) return d;
        if (json.layers[0].id != id) return d;

        var adj = json.layers[0].adjustment;

        if (!adj) return d;

        if (adj.brightness != undefined) d.putInteger(stringIDToTypeID("brightness"), adj.brightness);
        if (adj.center     != undefined) d.putInteger(stringIDToTypeID("center"),     adj.center);
        if (adj.useLegacy  != undefined) d.putBoolean(stringIDToTypeID("useLegacy"),  adj.useLegacy);

        return d;
        }
    catch (e) { throw(e); }
    }
Inspiring
June 22, 2023

This is incredible!

Also how? Why when what?!

Also if we can get data as json, can we also set data from json? O.O

Tell me more, I must know!!! O.O

 

Also, 

        eval("var json=" + executeAction(stringIDToTypeID("get"), d, DialogModes.NO).getString(stringIDToTypeID("json")));
This seems to make json object? o.O Dict? O.O eval = XX does dicts from strings/returns? O.O

Regards

Dariusz