Get values of adjustment layer

Is it possible, to get for example the brightness and the contrast of a brightness/contrast adjustment layer?
I found only for solid color layer.

Ssorry you are right. I created this for you and didn't test colorized hue values above 180. It seems that that angle is stored in two bytes but in a format that I don't fully understand. The code below does return the correct colorized hue value unless it is 360. It then return 0. 0 and 360 map to the same color and appears to be stored the same.
getHueSatAdjustment().colorized.hue;
function getHueSatAdjustment(){    
      var ref = new ActionReference();
     ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
     var desc = executeActionGet(ref).getList(stringIDToTypeID('adjustment')).getObjectValue(0);
     var rawData = desc.getData(stringIDToTypeID('legacyContentData'));
      var hueSatAdjustment = {};
      hueSatAdjustment.isColorized = readInteger(rawData, 2);
         hueSatAdjustment.colorized = {};
       hueSatAdjustment.colorized.hue = readAngle(rawData, 4);
       hueSatAdjustment.colorized.sat = readInteger(rawData, 6);
       hueSatAdjustment.colorized.brightness = readInteger(rawData, 8);
       hueSatAdjustment.master = {};
       hueSatAdjustment.master.hue = readInteger(rawData, 10);
       hueSatAdjustment.master.sat = readInteger(rawData, 12);
       hueSatAdjustment.master.brightness = readInteger(rawData, 14);
       hueSatAdjustment.reds = {};
       hueSatAdjustment.reds.beginRamp = readInteger(rawData, 16);
       hueSatAdjustment.reds.beginSustain = readInteger(rawData, 18);
       hueSatAdjustment.reds.endSustain = readInteger(rawData, 20);
       hueSatAdjustment.reds.endRamp = readInteger(rawData, 22);
       hueSatAdjustment.reds.hue = readInteger(rawData, 24);
       hueSatAdjustment.reds.sat = readInteger(rawData, 26);
       hueSatAdjustment.reds.brightness = readInteger(rawData, 28);
       hueSatAdjustment.yellows = {};
       hueSatAdjustment.yellows.beginRamp = readInteger(rawData, 30);
       hueSatAdjustment.yellows.beginSustain = readInteger(rawData, 32);
       hueSatAdjustment.yellows.endSustain = readInteger(rawData, 34);
       hueSatAdjustment.yellows.endRamp = readInteger(rawData, 36);
       hueSatAdjustment.yellows.hue = readInteger(rawData, 38);
       hueSatAdjustment.yellows.sat = readInteger(rawData, 40);
       hueSatAdjustment.yellows.brightness = readInteger(rawData, 42);
       hueSatAdjustment.greens = {};
       hueSatAdjustment.greens.beginRamp = readInteger(rawData, 44);
       hueSatAdjustment.greens.beginSustain = readInteger(rawData, 46);
       hueSatAdjustment.greens.endSustain = readInteger(rawData, 48);
       hueSatAdjustment.greens.endRamp = readInteger(rawData, 50);
       hueSatAdjustment.greens.hue = readInteger(rawData, 52);
       hueSatAdjustment.greens.sat = readInteger(rawData, 54);
       hueSatAdjustment.greens.brightness = readInteger(rawData, 56);
       hueSatAdjustment.cyans = {};
       hueSatAdjustment.cyans.beginRamp = readInteger(rawData, 58);
       hueSatAdjustment.cyans.beginSustain = readInteger(rawData, 60);
       hueSatAdjustment.cyans.endSustain = readInteger(rawData, 62);
       hueSatAdjustment.cyans.endRamp = readInteger(rawData, 64);
       hueSatAdjustment.cyans.hue = readInteger(rawData, 66);
       hueSatAdjustment.cyans.sat = readInteger(rawData, 68);
       hueSatAdjustment.cyans.brightness = readInteger(rawData, 70);
          hueSatAdjustment.blues = {};
          hueSatAdjustment.blues.beginRamp = readInteger(rawData, 72);
       hueSatAdjustment.blues.beginSustain = readInteger(rawData, 74);
       hueSatAdjustment.blues.endSustain = readInteger(rawData, 76);
       hueSatAdjustment.blues.endRamp = readInteger(rawData, 78);
       hueSatAdjustment.blues.hue = readInteger(rawData, 80);
       hueSatAdjustment.blues.sat = readInteger(rawData, 82);
       hueSatAdjustment.blues.brightness = readInteger(rawData, 84);
       hueSatAdjustment.magentas = {};
       hueSatAdjustment.magentas.beginRamp = readInteger(rawData, 86);
       hueSatAdjustment.magentas.beginSustain = readInteger(rawData, 88);
       hueSatAdjustment.magentas.endSustain = readInteger(rawData, 90);
       hueSatAdjustment.magentas.endRamp = readInteger(rawData, 92);      
       hueSatAdjustment.magentas.hue = readInteger(rawData, 94);
       hueSatAdjustment.magentas.sat = readInteger(rawData, 96);
       hueSatAdjustment.magentas.brightness = readInteger(rawData, 98);
       return hueSatAdjustment;
function readInteger(str, pointer) { //aka signed word = 2 bytes in big-endian byte order
  var b1 = str.charCodeAt(pointer);
  var b2 = str.charCodeAt(pointer+1);
  var ss = (b1 << 8) + b2;
  if(ss>0x7FFF){
     ss = 0xFFFF0000^ss;
  return ss;
function readAngle(str, pointer) {
     var b1 = str.charCodeAt(pointer);
     var b2 = str.charCodeAt(pointer+1);// if hue is 0 or 360 both == 0
     if(b1==0){// will be either 0 for less than 181
          var ss = b2;// range 0-180
     }else{// or 256 for greater than 181
          var ss = b2+104;//if b1 is 256 b2 range 77-256
  return ss;

Similar Messages

  • How to set levels values in adjustment layer via script?

    I try to make a script which generates a non destructive adjustment layer for levels which already sets values for shadow levels and highlight levels. I tried the scripting listener in order to record it. Unfortunately the scripting listener only records the creation of adjustment layers but not their settings like shadow or highlight levels.
    The first question here: Why can't the scripting listener do this?
    So I tried to do it on my own and came up with the following script which won't work. My second question therefore is, can you help me to make a script which achieves my goal? Thanks a lot. I use Photoshop CC 2014.
    var desc780 = new ActionDescriptor();
    desc780.putInteger( charIDToTypeID( "ShdL" ), 60 );
    desc780.putInteger( charIDToTypeID( "HghL" ), 190 );
    var list126 = new ActionList();
    list126.putObject( charIDToTypeID( "LvlA" ), desc780 );
    var desc779 = new ActionDescriptor();
    desc779.putList( charIDToTypeID( "Adjs" ), list126 );
    executeAction( charIDToTypeID( "Lvls" ), desc779, DialogModes.NO );
    Here is the script which has been recorded by the scripting listener. As you can see there is no setting of the adjustment layer.
    var idMk = charIDToTypeID( "Mk  " );
    var desc188 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
    var ref135 = new ActionReference();
    var idAdjL = charIDToTypeID( "AdjL" );
    ref135.putClass( idAdjL );
    desc188.putReference( idnull, ref135 );
    var idUsng = charIDToTypeID( "Usng" );
    var desc189 = new ActionDescriptor();
    var idType = charIDToTypeID( "Type" );
    var desc190 = new ActionDescriptor();
    var idpresetKind = stringIDToTypeID( "presetKind" );
    var idpresetKindType = stringIDToTypeID( "presetKindType" );
    var idpresetKindDefault = stringIDToTypeID( "presetKindDefault" );
    desc190.putEnumerated( idpresetKind, idpresetKindType, idpresetKindDefault );
    var idLvls = charIDToTypeID( "Lvls" );
    desc189.putObject( idType, idLvls, desc190 );
    var idAdjL = charIDToTypeID( "AdjL" );
    desc188.putObject( idUsng, idAdjL, desc189 );
    executeAction( idMk, desc188, DialogModes.NO );

    Photoshop Scripting

  • [Photoshop CC (Win7 64bit)]  Adjustment Layer keeps old value when I made undo.

    Undo in Adjustment layer in Photoshop CC doesn't work well.
    When I made undo, the photo would go back, but "Properties Panel" doesn't go back. It still keeps the same value before undoing.
    Properties Panel would go correct value, after I select a another layer and select adjustment layer again.
    I checked all of adjustment layers, and I found that most of them has the same behavior. (Between Brightness/Contrast... and Selective Color...)
    Are there any solution?
    What version of Photoshop : 14.0
    Have you installed the recent updates?: Yes
    What operating system? : Windows7 64bit
    What kind(s) of image file(s)? : any kind
    If you are getting error message(s), what is the full text of the error message(s)? : no message
    What were you doing when the problem occurred? undo
    Has this ever worked before? no (CS6 works well)
    What other software are you running? Google Chrome
    Tell us about your computer hardware. RAM16GB Free space on C: 80GB
    Has this ever worked before? : no

    I'm moving this post from this forum for photoshop-dot-com (an online portal) to the correct forum for Photoshop pro users like yourselves, where your question can be answered.
    FYI, the correct forum URL is: http://forums.adobe.com/community/photoshop
    Since you've posted in this forum for Photoshop.com, you may receive additional posts in this forum unless you update your profile.  After signing in on these forums, go to Your Stuff > Forums, and disable any forum you don't want to watch.
    Kind regards,
    Charlie

  • Using color sampler values with curves adjustment layer

    Hi, I have just started trying to teach myself javascript.  Based on preliminary research, it's become apparent that there are many functions in Photoshop that are either extremely cumbersome or impossible to code by hand without using the Script Listener.
    My  goal is as follows: first, I will manually load two photos as layers in a single document.  Then I will manually place two or more color sampler points on the document.  At this point I would like the script to create a curves adjustment layer (ideally clipped to layer 2) and place as individual channel anchor points  the RGB data from the color sampler points on Layer 2, and then adjust the output of the points on each channel to the color sampler RGB values of layer 1.  
    As my first script, I realize this is probably going to be a lot of work.
    I did find some code that returns the average value of manually placed color sampler points.  Conceptually then, I would need to add code which creates a new curves adjustment layer and adds those RGB values (from a specific layer)  as anchor points on the individual channels,  and then hides one layer and looks at the RGB values of the color sampler points, and uses them as the output values for each anchor point.
    Sounds simple enough from a conceptual standpoint.
    I'm looking for some guidance on how to get started.
    Which parts will I definitely need Scriptlistener for and will that be adequate to do the job?
    How would you recommend I get started on this?
    Thanks very much for any input.

    The function I had provided was an example into which you would need to feed the values you got with Mike’s code.
    The code below would create a Curves Layer as shown in the screenshot, but I’m not sure it would work reasonably for all cases.
    // with code by mike hale;
    // 2012, use it at your own risk;
    // call the function to run the script
    #target photoshop
    createCurveAdjustmetFromColorSamplers();
    // create a function fo hold most of the code
    function createCurveAdjustmetFromColorSamplers(){
        // first add some condition checks
        // needs an open document in a color mode that supports layers
        if(app.documents.length == 0 || ( app.activeDocument.mode == DocumentMode.BITMAP || app.activeDocument.mode == DocumentMode.INDEXEDCOLOR ) ){   
            alert('This script requires a document in Greyscale, RGB, CMYK, or Lab mode.');
            return;
        // check for at least two colorSamplers
        if(app.activeDocument.colorSamplers.length < 2 ){
            alert('This script requires at least two colorSamplers.');
            return;
        // last check for at least two layers - assume they will be on same level( not in layerSet )
        if(app.activeDocument.layers.length < 2 ){
            alert('This script requires at least two layers.');
            return;
        // create varaibles to hold the colorSampler's color property for each layer
        // for the bottom layer
        var outputArray = new Array();
        // for top layer - array could also be created this way
        var inputArray = [];
        // store the number of samples because it will be needed in more than one place
        var numberOfSamples = app.activeDocument.colorSamplers.length;
        // hide the top layer
        app.activeDocument.layers[0].visible = false;
        // collect the samples from the bottom layer
        for(var sampleIndex = 0; sampleIndex < numberOfSamples; sampleIndex++ ){
            outputArray.push(app.activeDocument.colorSamplers[sampleIndex].color);
        // turn the top layer back on
        app.activeDocument.layers[0].visible = true;
        // collect those samples
        for(var sampleIndex = 0; sampleIndex < numberOfSamples; sampleIndex++ ){
            inputArray.push(app.activeDocument.colorSamplers[sampleIndex].color);
        // make sure the top layer is the activeLayer
        app.activeDocument.activeLayer = app.activeDocument.layers[0];
    // create arrays of the color values:
    var theArray = [[0, 0, 0, 0, 0, 0]];
    for (var m = 0; m < inputArray.length; m++) {
    theArray.push([inputArray[m].rgb.red, outputArray[m].rgb.red, inputArray[m].rgb.green, outputArray[m].rgb.green, inputArray[m].rgb.blue, outputArray[m].rgb.blue]);
    theArray.push([255, 255, 255, 255, 255, 255]);
    // sort;
    theArray.sort(sortArrayByIndexedItem);
    // makeCurveAdjustmentLayer();
    rgbCurvesLayer (theArray)
    ////// make rgb curves layer //////
    function rgbCurvesLayer (theArray) {
    // =======================================================
    var idMk = charIDToTypeID( "Mk  " );
        var desc5 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var ref2 = new ActionReference();
            var idAdjL = charIDToTypeID( "AdjL" );
            ref2.putClass( idAdjL );
        desc5.putReference( idnull, ref2 );
        var idUsng = charIDToTypeID( "Usng" );
            var desc6 = new ActionDescriptor();
            var idType = charIDToTypeID( "Type" );
                var desc7 = new ActionDescriptor();
                var idpresetKind = stringIDToTypeID( "presetKind" );
                var idpresetKindType = stringIDToTypeID( "presetKindType" );
                var idpresetKindDefault = stringIDToTypeID( "presetKindDefault" );
                desc7.putEnumerated( idpresetKind, idpresetKindType, idpresetKindDefault );
            var idCrvs = charIDToTypeID( "Crvs" );
            desc6.putObject( idType, idCrvs, desc7 );
        var idAdjL = charIDToTypeID( "AdjL" );
        desc5.putObject( idUsng, idAdjL, desc6 );
    executeAction( idMk, desc5, DialogModes.NO );
    // =======================================================
    var idsetd = charIDToTypeID( "setd" );
        var desc8 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var ref3 = new ActionReference();
            var idAdjL = charIDToTypeID( "AdjL" );
            var idOrdn = charIDToTypeID( "Ordn" );
            var idTrgt = charIDToTypeID( "Trgt" );
            ref3.putEnumerated( idAdjL, idOrdn, idTrgt );
        desc8.putReference( idnull, ref3 );
        var idT = charIDToTypeID( "T   " );
            var desc9 = new ActionDescriptor();
            var idpresetKind = stringIDToTypeID( "presetKind" );
            var idpresetKindType = stringIDToTypeID( "presetKindType" );
            var idpresetKindCustom = stringIDToTypeID( "presetKindCustom" );
            desc9.putEnumerated( idpresetKind, idpresetKindType, idpresetKindCustom );
            var idAdjs = charIDToTypeID( "Adjs" );
                var list1 = new ActionList();
                    var desc10 = new ActionDescriptor();
                    var idChnl = charIDToTypeID( "Chnl" );
                        var ref4 = new ActionReference();
                        var idChnl = charIDToTypeID( "Chnl" );
                        var idChnl = charIDToTypeID( "Chnl" );
                        var idRd = charIDToTypeID( "Rd  " );
                        ref4.putEnumerated( idChnl, idChnl, idRd );
                    desc10.putReference( idChnl, ref4 );
                    var idCrv = charIDToTypeID( "Crv " );
                        var list2 = new ActionList();
    // add r points;
    for (var m = 0; m < theArray.length; m++) {
              addCurvePoint (list2, theArray[m], 0)
                    desc10.putList( idCrv, list2 );
                var idCrvA = charIDToTypeID( "CrvA" );
                list1.putObject( idCrvA, desc10 );
                    var desc15 = new ActionDescriptor();
                    var idChnl = charIDToTypeID( "Chnl" );
                        var ref5 = new ActionReference();
                        var idChnl = charIDToTypeID( "Chnl" );
                        var idChnl = charIDToTypeID( "Chnl" );
                        var idGrn = charIDToTypeID( "Grn " );
                        ref5.putEnumerated( idChnl, idChnl, idGrn );
                    desc15.putReference( idChnl, ref5 );
                    var idCrv = charIDToTypeID( "Crv " );
                        var list3 = new ActionList();
    // add g points;
    for (var m = 0; m < theArray.length; m++) {
              addCurvePoint (list3, theArray[m], 2)
                    desc15.putList( idCrv, list3 );
                var idCrvA = charIDToTypeID( "CrvA" );
                list1.putObject( idCrvA, desc15 );
                    var desc20 = new ActionDescriptor();
                    var idChnl = charIDToTypeID( "Chnl" );
                        var ref6 = new ActionReference();
                        var idChnl = charIDToTypeID( "Chnl" );
                        var idChnl = charIDToTypeID( "Chnl" );
                        var idBl = charIDToTypeID( "Bl  " );
                        ref6.putEnumerated( idChnl, idChnl, idBl );
                    desc20.putReference( idChnl, ref6 );
                    var idCrv = charIDToTypeID( "Crv " );
                        var list4 = new ActionList();
    // add b points;
    for (var m = 0; m < theArray.length; m++) {
              addCurvePoint (list4, theArray[m], 4)
                    desc20.putList( idCrv, list4 );
                var idCrvA = charIDToTypeID( "CrvA" );
                list1.putObject( idCrvA, desc20 );
            desc9.putList( idAdjs, list1 );
        var idCrvs = charIDToTypeID( "Crvs" );
        desc8.putObject( idT, idCrvs, desc9 );
    executeAction( idsetd, desc8, DialogModes.NO );
    return app.activeDocument.activeLayer;
    ////// add curve point //////
    function addCurvePoint (theList, valueHor, theNumber) {
    var desc11 = new ActionDescriptor();
    var idHrzn = charIDToTypeID( "Hrzn" );
    desc11.putDouble( idHrzn, valueHor[theNumber] );
    var idVrtc = charIDToTypeID( "Vrtc" );
    desc11.putDouble( idVrtc, valueHor[theNumber+1] );
    var idPnt = charIDToTypeID( "Pnt " );
    theList.putObject( idPnt, desc11 );
    ////// sort a double array, thanks to sam, http://www.rhinocerus.net/forum/lang-javascript/ //////
    function sortArrayByIndexedItem(a,b) {
    var theIndex = 0;
    if (a[theIndex]<b[theIndex]) return -1;
    if (a[theIndex]>b[theIndex]) return 1;
    return 0;

  • Setting values of an Hue/Sat adjustment layer.

    Hi everyone!
    I'm sorry to but I desperatly search a function for photoshop CS5 that changes values of an HUE/Saturation adjustment layer.
    I searched several times on internet but couldn't find.
    I also tried with the scriptlistener but when I'm changing values of the adjustment layer, nothing writes in the logs.
    Could someone else please ? Thanks in advance.

    Does this help?
    #target photoshop
    setHueSatForLuminance ([0, 60, 0], [9, -30, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]);
    // hue/sat-layer function;
    function setHueSatForLuminance (master, red, yellow, green, blue, cyan, magenta) {
    // =======================================================
    var idMk = charIDToTypeID( "Mk  " );
        var desc43 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var ref8 = new ActionReference();
            var idAdjL = charIDToTypeID( "AdjL" );
            ref8.putClass( idAdjL );
        desc43.putReference( idnull, ref8 );
        var idUsng = charIDToTypeID( "Usng" );
            var desc44 = new ActionDescriptor();
            var idType = charIDToTypeID( "Type" );
                var desc45 = new ActionDescriptor();
                var idpresetKind = stringIDToTypeID( "presetKind" );
                var idpresetKindType = stringIDToTypeID( "presetKindType" );
                var idpresetKindDefault = stringIDToTypeID( "presetKindDefault" );
                desc45.putEnumerated( idpresetKind, idpresetKindType, idpresetKindDefault );
                var idClrz = charIDToTypeID( "Clrz" );
                desc45.putBoolean( idClrz, false );
            var idHStr = charIDToTypeID( "HStr" );
            desc44.putObject( idType, idHStr, desc45 );
        var idAdjL = charIDToTypeID( "AdjL" );
        desc43.putObject( idUsng, idAdjL, desc44 );
    executeAction( idMk, desc43, DialogModes.NO );
    // =======================================================
    var idsetd = charIDToTypeID( "setd" );
        var desc46 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var ref9 = new ActionReference();
            var idAdjL = charIDToTypeID( "AdjL" );
            var idOrdn = charIDToTypeID( "Ordn" );
            var idTrgt = charIDToTypeID( "Trgt" );
            ref9.putEnumerated( idAdjL, idOrdn, idTrgt );
        desc46.putReference( idnull, ref9 );
        var idT = charIDToTypeID( "T   " );
            var desc47 = new ActionDescriptor();
            var idpresetKind = stringIDToTypeID( "presetKind" );
            var idpresetKindType = stringIDToTypeID( "presetKindType" );
            var idpresetKindCustom = stringIDToTypeID( "presetKindCustom" );
            desc47.putEnumerated( idpresetKind, idpresetKindType, idpresetKindCustom );
            var idAdjs = charIDToTypeID( "Adjs" );
                var list3 = new ActionList();
                    var desc12 = new ActionDescriptor();
                    var idH = charIDToTypeID( "H   " );
                    desc12.putInteger( idH, master[0] );
                    var idStrt = charIDToTypeID( "Strt" );
                    desc12.putInteger( idStrt, master[1] );
                    var idLght = charIDToTypeID( "Lght" );
                    desc12.putInteger( idLght, master[2] );
                var idHsttwo = charIDToTypeID( "Hst2" );
                list3.putObject( idHsttwo, desc12 );
                    var desc48 = new ActionDescriptor();
                    var idLclR = charIDToTypeID( "LclR" );
                    desc48.putInteger( idLclR, 1 );
                    var idBgnR = charIDToTypeID( "BgnR" );
                    desc48.putInteger( idBgnR, 315 );
                    var idBgnS = charIDToTypeID( "BgnS" );
                    desc48.putInteger( idBgnS, 345 );
                    var idEndS = charIDToTypeID( "EndS" );
                    desc48.putInteger( idEndS, 15 );
                    var idEndR = charIDToTypeID( "EndR" );
                    desc48.putInteger( idEndR, 45 );
                    var idH = charIDToTypeID( "H   " );
                    desc48.putInteger( idH, red[0] );
                    var idStrt = charIDToTypeID( "Strt" );
                    desc48.putInteger( idStrt, red[1] );
                    var idLght = charIDToTypeID( "Lght" );
                    desc48.putInteger( idLght, red[2] );
                var idHsttwo = charIDToTypeID( "Hst2" );
                list3.putObject( idHsttwo, desc48 );
                    var desc49 = new ActionDescriptor();
                    var idLclR = charIDToTypeID( "LclR" );
                    desc49.putInteger( idLclR, 2 );
                    var idBgnR = charIDToTypeID( "BgnR" );
                    desc49.putInteger( idBgnR, 15 );
                    var idBgnS = charIDToTypeID( "BgnS" );
                    desc49.putInteger( idBgnS, 45 );
                    var idEndS = charIDToTypeID( "EndS" );
                    desc49.putInteger( idEndS, 75 );
                    var idEndR = charIDToTypeID( "EndR" );
                    desc49.putInteger( idEndR, 105 );
                    var idH = charIDToTypeID( "H   " );
                    desc49.putInteger( idH, yellow[0] );
                    var idStrt = charIDToTypeID( "Strt" );
                    desc49.putInteger( idStrt, yellow[1] );
                    var idLght = charIDToTypeID( "Lght" );
                    desc49.putInteger( idLght, yellow[2] );
                var idHsttwo = charIDToTypeID( "Hst2" );
                list3.putObject( idHsttwo, desc49 );
                    var desc50 = new ActionDescriptor();
                    var idLclR = charIDToTypeID( "LclR" );
                    desc50.putInteger( idLclR, 3 );
                    var idBgnR = charIDToTypeID( "BgnR" );
                    desc50.putInteger( idBgnR, 75 );
                    var idBgnS = charIDToTypeID( "BgnS" );
                    desc50.putInteger( idBgnS, 105 );
                    var idEndS = charIDToTypeID( "EndS" );
                    desc50.putInteger( idEndS, 135 );
                    var idEndR = charIDToTypeID( "EndR" );
                    desc50.putInteger( idEndR, 165 );
                    var idH = charIDToTypeID( "H   " );
                    desc50.putInteger( idH, green[0] );
                    var idStrt = charIDToTypeID( "Strt" );
                    desc50.putInteger( idStrt, green[1] );
                    var idLght = charIDToTypeID( "Lght" );
                    desc50.putInteger( idLght, green[1] );
                var idHsttwo = charIDToTypeID( "Hst2" );
                list3.putObject( idHsttwo, desc50 );
                    var desc51 = new ActionDescriptor();
                    var idLclR = charIDToTypeID( "LclR" );
                    desc51.putInteger( idLclR, 4 );
                    var idBgnR = charIDToTypeID( "BgnR" );
                    desc51.putInteger( idBgnR, 135 );
                    var idBgnS = charIDToTypeID( "BgnS" );
                    desc51.putInteger( idBgnS, 165 );
                    var idEndS = charIDToTypeID( "EndS" );
                    desc51.putInteger( idEndS, 195 );
                    var idEndR = charIDToTypeID( "EndR" );
                    desc51.putInteger( idEndR, 225 );
                    var idH = charIDToTypeID( "H   " );
                    desc51.putInteger( idH, blue[0] );
                    var idStrt = charIDToTypeID( "Strt" );
                    desc51.putInteger( idStrt, blue[1] );
                    var idLght = charIDToTypeID( "Lght" );
                    desc51.putInteger( idLght, blue[2] );
                var idHsttwo = charIDToTypeID( "Hst2" );
                list3.putObject( idHsttwo, desc51 );
                    var desc52 = new ActionDescriptor();
                    var idLclR = charIDToTypeID( "LclR" );
                    desc52.putInteger( idLclR, 5 );
                    var idBgnR = charIDToTypeID( "BgnR" );
                    desc52.putInteger( idBgnR, 195 );
                    var idBgnS = charIDToTypeID( "BgnS" );
                    desc52.putInteger( idBgnS, 225 );
                    var idEndS = charIDToTypeID( "EndS" );
                    desc52.putInteger( idEndS, 255 );
                    var idEndR = charIDToTypeID( "EndR" );
                    desc52.putInteger( idEndR, 285 );
                    var idH = charIDToTypeID( "H   " );
                    desc52.putInteger( idH, cyan[0] );
                    var idStrt = charIDToTypeID( "Strt" );
                    desc52.putInteger( idStrt, cyan[1] );
                    var idLght = charIDToTypeID( "Lght" );
                    desc52.putInteger( idLght, cyan[2] );
                var idHsttwo = charIDToTypeID( "Hst2" );
                list3.putObject( idHsttwo, desc52 );
                    var desc53 = new ActionDescriptor();
                    var idLclR = charIDToTypeID( "LclR" );
                    desc53.putInteger( idLclR, 6 );
                    var idBgnR = charIDToTypeID( "BgnR" );
                    desc53.putInteger( idBgnR, 255 );
                    var idBgnS = charIDToTypeID( "BgnS" );
                    desc53.putInteger( idBgnS, 285 );
                    var idEndS = charIDToTypeID( "EndS" );
                    desc53.putInteger( idEndS, 315 );
                    var idEndR = charIDToTypeID( "EndR" );
                    desc53.putInteger( idEndR, 345 );
                    var idH = charIDToTypeID( "H   " );
                    desc53.putInteger( idH, magenta[0] );
                    var idStrt = charIDToTypeID( "Strt" );
                    desc53.putInteger( idStrt, magenta[1] );
                    var idLght = charIDToTypeID( "Lght" );
                    desc53.putInteger( idLght, magenta[2] );
                var idHsttwo = charIDToTypeID( "Hst2" );
                list3.putObject( idHsttwo, desc53 );
            desc47.putList( idAdjs, list3 );
        var idHStr = charIDToTypeID( "HStr" );
        desc46.putObject( idT, idHStr, desc47 );
    executeAction( idsetd, desc46, DialogModes.NO );

  • I can't get photoshop to record a curve adjustment layer preset.

    I am trying to record an action on a colleague's machine that has a custom curve setting but cant seem to get it to stick as a playable action step. He has one of the new trashcans (Mac Pro) with a system version of 10.9.4 and photoshop version of 2014.2.2. I am able to do it on my machine by recording the addition of the curve adjustment layer then selecting a pre-created curve preset. I am running Photoshop 2014.0.0. This does not work on his machine....quite maddening. Any ideas?

    Did you set up the custom setting as a preset on all machines  that will be using the action the loads the curves preset?
    How did you record the Levels adjustment?
    Did you add an adjustment layer or just use levels?
    If you  added an adjustment layer two step are recorded in newer versions of Photoshop.  First step add the adjustment layer the second step setsl adjustment settings.  The recording of the adjustment setting is delayed till  you commit the adjustment  by doing the next action step.  How the add adjustment layer plays back can vary for Adobe introduced bugs in CS4 adding the Adjustment Panel they included two option that can change how Photoshop operates. And Actions and Scripts can not control or access these options.

  • When I select an adjustment layer I do not automatically get a mask.

    Every adjustment layer tutorial that I watch suggests that when I select an adjustment layer I should get a mask with it.  I must have something set incorrect because in my case I must actually choose a mask manually.
    Any ideas?

    Cs4/Cs5 look on the adjustments panel flyout menu and check add Mask by Default.
    Cs2/Cs3 look at the Layers Palette options from the flyout menu.
    MTSTUNER

  • In Photoshop CC (2014), Hue/Saturation adjustment layer properties disappear

    I am running Photoshop CC (2014) under Windows 7 Professional.  The program is up to date.
    Today, while editing an 8-bit image, I added a Hue/Saturation adjustment layer.  Then, in the properties panel for this layer, with the on-image adjustment tool selected, I clicked a color in the image to get a range of colors whose saturation I wanted to adjust.  Next, using the saturation slider in the properties panel, I increased the saturation of this range of colors. Finally, I closed the properties panel by clicking on the double arrow in the upper right corner.
    Later, I wanted to modify this adjustment layer.  I double-clicked on the layer thumbnail to reopen the properties panel, and found that, although the previous increase in saturation was still operating, the saturation slider was back at its default position, and the range of colors that I had previously established was gone.  Thus, I could not make further adjustments to this range of colors.
    I then did some further experimentation:  I deleted the first Hue/Saturation adjustment layer, and created a new Hue/Saturation adjustment layer. I then again established a range of colors as above, again increased the saturation of these colors, and then again closed the properties panel by clicking on the double arrow in the upper right corner.  This time, however, when I wanted to try to modify this adjustment layer, instead of double-clicking on the layer thumbnail to reopen the properties panel, I right-clicked on the layer and then clicked on "Edit adjustment..."  This opened the properties panel, which, this time, correctly showed my original adjustments -- the saturation slider showed the positive adjustment that I had previously made, and the range of colors established earlier was still shown. But then, on a hunch, I added a Curves adjustment layer above the Hue/Saturation adjustment layer.  Now, when I again opened the properties panel of the Hue/Saturation adjustment layer (by right-clicking on the layer and then clicking on "Edit adjustment..."), my previous settings were gone -- the saturation slider was at its default position and the range of colors was gone!  (But the increase in saturation was still operating.)
    Thus, it appears that there is a bug in the functioning of the properties panel of the Hue/Saturation layer: In short, once you have added a further adjustment layer, you can't then go back and make changes to the properties of the Hue/Saturation layer.  I would be interested to hear if others have noticed this.  Also, is Adobe planning to address this?

    OK, I am not entirely sure I have understood your post completely, but when you edit a colour range with a Hue/Sat layer, and click off and back on again, it will default to showing the RGB values, which you may not have made any adjustment to.  If you pick the previous colour from the image, or a similar colour, it _will_ show you the adjustments.  So long as your picked colour is contained within the range of the previous adjustment.
    Ypu could also use the RGB drop down (actually they call it Master nowadays), and chose the colour that is closest to your previously picked colour.  I expect you are away that you can edit the colour range being operated on by dragging the four sliders on the two colour bars at the bottom of the Properties panel.
    Does that make sense, or am I going in the wrong direction?

  • How to fix numeric entry box in Curves adjustment layer?

    In the Curves adjustment layer Properties box there are numeric entry boxes for changing input and output values.  The first few times I experimented with changing the output values of a selected point in the R, G, & B channels, all went well.  Now, although I believe I am using the same method, I can only access the input value box.  The moment I click on the output value box both boxes black out and no entry is possible.  I'm using the Windows version of Photoshop CC, so Tab doesn't work to get from the input to the output box.  I have tried resetting the Preferences for Photoshop and that seemed to work once, briefly, but now that makes no difference.
    I have fixed the problem with Adobe Customer Support Chat.  The solution was to delete the Adobe Photoshop CC Settings folder.  With Photoshop closed, open the Start menu and type %AppData% in the search bar (Windows 7); this takes you to the Roaming folder where you then navigate to the Adobe folder and the Adobe Photoshop CC folder.  We removed the Adobe Phototshop CC Settings folder by dragging it to the desktop.  Once it was established that this fixed the problem, the folder was deleted from the desktop.
    Message was edited by: C55279 
    Problem solved

    I've noticed that a few times on windows 8 32 bit, photoshop cs6 32 bit with 4gb of ram, a nVidia 8400 gs graphics card and open gl seems to work fine.
    I guess that's probably some kind of glitch.
    One way to get back the dropdown is to click on the Curves Display Options in the flyout menu and then just click OK in the dialog.
    Added: It doesn't seem to happen if the crop tool is set to Classic Mode.
    Message was edited by: R_Kelly

  • Determining when an adjustment layer holds information.

    Is it possible using javascript to determine when an adjustment layer holds information? I'll go into some detail as to what I mean.
    I run a combination script/actions to set up a bunch of layers based on what I'm doing. Not all layers will get used in any given image. For example, when I'm retouching a model's photo, I run one that sets up a bunch of adjustment layers to enhance the color in the models eyes, or to change the color depending on what I'm doing. This sets up seven layers, each for a different color, then a few for highlights and/or catchlights. I may use between 0 and 3 of these layers. Each adjustment layer has an inverse mask (black) which I paint white in the areas I want to enhance.
    Now, is there an easy way to determine which of these masks are pure black and which have been painted onto? Also, is there an easy way to determine on an adjustment layer such as curves, levels, hue/saturation, etc. whether any adjustments have been made or if they are still in default? I'm guessing the best way would be to first check the mask to see if it's not all black and if it isn't, then check for adjustments.

    I was not really happy with the way I was testing for default settings. I was afraid that the simple replace text I was using might fail in some cases. It turns out that I was right. So here is a new set of functions. These I feel good about using.
    All of the functions need this CRC code.
      JavaScript source code        March 10, 2006
      Copyright (c) 2003-2006 Scandinavian Digital Systems AB
      Internet: http://www.digsys.se
      Freeware: The source code and its methods and algorithms may be
                used as desired without restrictions.
      CRC-32 (as it is in ZMODEM) in table form
      Copyright (C) 1986 Gary S. Brown. You may use this program, or
      code or tables extracted from it, as desired without restriction.
      Modified by Anders Danielsson, February 5, 1989 and March 10, 2006.
      This is also known as FCS-32 (as it is in PPP), described in
      RFC-1662 by William Allen Simpson, see RFC-1662 for references.
    var Crc32Tab = new Array( /* CRC polynomial 0xEDB88320 */
      C/C++ language:
      unsigned long Crc32Tab[] = {...};
    0x00000000,0x77073096,0xEE0E612C,0x990951BA,0x076DC419,0x706AF48F,0xE963A535,0x9E6495A3,
    0x0EDB8832,0x79DCB8A4,0xE0D5E91E,0x97D2D988,0x09B64C2B,0x7EB17CBD,0xE7B82D07,0x90BF1D91,
    0x1DB71064,0x6AB020F2,0xF3B97148,0x84BE41DE,0x1ADAD47D,0x6DDDE4EB,0xF4D4B551,0x83D385C7,
    0x136C9856,0x646BA8C0,0xFD62F97A,0x8A65C9EC,0x14015C4F,0x63066CD9,0xFA0F3D63,0x8D080DF5,
    0x3B6E20C8,0x4C69105E,0xD56041E4,0xA2677172,0x3C03E4D1,0x4B04D447,0xD20D85FD,0xA50AB56B,
    0x35B5A8FA,0x42B2986C,0xDBBBC9D6,0xACBCF940,0x32D86CE3,0x45DF5C75,0xDCD60DCF,0xABD13D59,
    0x26D930AC,0x51DE003A,0xC8D75180,0xBFD06116,0x21B4F4B5,0x56B3C423,0xCFBA9599,0xB8BDA50F,
    0x2802B89E,0x5F058808,0xC60CD9B2,0xB10BE924,0x2F6F7C87,0x58684C11,0xC1611DAB,0xB6662D3D,
    0x76DC4190,0x01DB7106,0x98D220BC,0xEFD5102A,0x71B18589,0x06B6B51F,0x9FBFE4A5,0xE8B8D433,
    0x7807C9A2,0x0F00F934,0x9609A88E,0xE10E9818,0x7F6A0DBB,0x086D3D2D,0x91646C97,0xE6635C01,
    0x6B6B51F4,0x1C6C6162,0x856530D8,0xF262004E,0x6C0695ED,0x1B01A57B,0x8208F4C1,0xF50FC457,
    0x65B0D9C6,0x12B7E950,0x8BBEB8EA,0xFCB9887C,0x62DD1DDF,0x15DA2D49,0x8CD37CF3,0xFBD44C65,
    0x4DB26158,0x3AB551CE,0xA3BC0074,0xD4BB30E2,0x4ADFA541,0x3DD895D7,0xA4D1C46D,0xD3D6F4FB,
    0x4369E96A,0x346ED9FC,0xAD678846,0xDA60B8D0,0x44042D73,0x33031DE5,0xAA0A4C5F,0xDD0D7CC9,
    0x5005713C,0x270241AA,0xBE0B1010,0xC90C2086,0x5768B525,0x206F85B3,0xB966D409,0xCE61E49F,
    0x5EDEF90E,0x29D9C998,0xB0D09822,0xC7D7A8B4,0x59B33D17,0x2EB40D81,0xB7BD5C3B,0xC0BA6CAD,
    0xEDB88320,0x9ABFB3B6,0x03B6E20C,0x74B1D29A,0xEAD54739,0x9DD277AF,0x04DB2615,0x73DC1683,
    0xE3630B12,0x94643B84,0x0D6D6A3E,0x7A6A5AA8,0xE40ECF0B,0x9309FF9D,0x0A00AE27,0x7D079EB1,
    0xF00F9344,0x8708A3D2,0x1E01F268,0x6906C2FE,0xF762575D,0x806567CB,0x196C3671,0x6E6B06E7,
    0xFED41B76,0x89D32BE0,0x10DA7A5A,0x67DD4ACC,0xF9B9DF6F,0x8EBEEFF9,0x17B7BE43,0x60B08ED5,
    0xD6D6A3E8,0xA1D1937E,0x38D8C2C4,0x4FDFF252,0xD1BB67F1,0xA6BC5767,0x3FB506DD,0x48B2364B,
    0xD80D2BDA,0xAF0A1B4C,0x36034AF6,0x41047A60,0xDF60EFC3,0xA867DF55,0x316E8EEF,0x4669BE79,
    0xCB61B38C,0xBC66831A,0x256FD2A0,0x5268E236,0xCC0C7795,0xBB0B4703,0x220216B9,0x5505262F,
    0xC5BA3BBE,0xB2BD0B28,0x2BB45A92,0x5CB36A04,0xC2D7FFA7,0xB5D0CF31,0x2CD99E8B,0x5BDEAE1D,
    0x9B64C2B0,0xEC63F226,0x756AA39C,0x026D930A,0x9C0906A9,0xEB0E363F,0x72076785,0x05005713,
    0x95BF4A82,0xE2B87A14,0x7BB12BAE,0x0CB61B38,0x92D28E9B,0xE5D5BE0D,0x7CDCEFB7,0x0BDBDF21,
    0x86D3D2D4,0xF1D4E242,0x68DDB3F8,0x1FDA836E,0x81BE16CD,0xF6B9265B,0x6FB077E1,0x18B74777,
    0x88085AE6,0xFF0F6A70,0x66063BCA,0x11010B5C,0x8F659EFF,0xF862AE69,0x616BFFD3,0x166CCF45,
    0xA00AE278,0xD70DD2EE,0x4E048354,0x3903B3C2,0xA7672661,0xD06016F7,0x4969474D,0x3E6E77DB,
    0xAED16A4A,0xD9D65ADC,0x40DF0B66,0x37D83BF0,0xA9BCAE53,0xDEBB9EC5,0x47B2CF7F,0x30B5FFE9,
    0xBDBDF21C,0xCABAC28A,0x53B39330,0x24B4A3A6,0xBAD03605,0xCDD70693,0x54DE5729,0x23D967BF,
    0xB3667A2E,0xC4614AB8,0x5D681B02,0x2A6F2B94,0xB40BBE37,0xC30C8EA1,0x5A05DF1B,0x2D02EF8D);
    function Crc32Add(crc,c)
      'crc' should be initialized to 0xFFFFFFFF and after the computation it should be
      complemented (inverted).
      CRC-32 is also known as FCS-32.
      If the FCS-32 is calculated over the data and over the complemented FCS-32, the
      result will always be 0xDEBB20E3 (without the complementation).
      return Crc32Tab[(crc^c)&0xFF]^((crc>>8)&0xFFFFFF);
      C/C++ language:
      inline unsigned long Crc32Add(unsigned long crc, unsigned char c)
        return Crc32Tab[(unsigned char)crc^c]^(crc>>8);
      Application functions that calculates CRC of a string
    function Crc32Str(str)
      var n;
      var len=str.length;
      var crc;
      crc=0xFFFFFFFF;
      for (n=0; n<len; n++)
        crc=Crc32Add(crc,str.charCodeAt(n));
      return crc^0xFFFFFFFF;
      Hex convert functions
    function Hex32(val)
      Convert value as 32-bit unsigned integer to 8 digit hexadecimal number prefixed with "0x".
      var n;
      var str1;
      var str2;
      n=val&0xFFFF;
      str1=n.toString(16).toUpperCase();
      while (str1.length<4)
        str1="0"+str1;
      n=(val>>>16)&0xFFFF;
      str2=n.toString(16).toUpperCase();
      while (str2.length<4)
        str2="0"+str2;
      return "0x"+str2+str1;
    isDefaultHueSatAdjustment();
    function isDefaultHueSatAdjustment(){
         if(app.activeDocument.activeLayer.kind != LayerKind.HUESATURATION ) return;
         var ref = new ActionReference();
         ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
         var desc = executeActionGet(ref).getList(stringIDToTypeID('adjustment')).getObjectValue(0);
         var rawData = desc.getData(stringIDToTypeID('legacyContentData'));
         var str = Hex32(Crc32Str(rawData));
         if( str == '0xB83ED6B1' ) return true;
         return false;
    isDefaultColorBalanceAdjustment();
    function isDefaultColorBalanceAdjustment(){
         if(app.activeDocument.activeLayer.kind != LayerKind.COLORBALANCE ) return;
         var ref = new ActionReference();
         ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
         var desc = executeActionGet(ref).getList(stringIDToTypeID('adjustment')).getObjectValue(0);
         var rawData = desc.getData(stringIDToTypeID('legacyContentData'));
         var str = Hex32(Crc32Str(rawData));
         if( str == '0x16CEAACC' ) return true;
         return false;
    isDefaultCurvesAdjustment();
    function isDefaultCurvesAdjustment(){
         if(app.activeDocument.activeLayer.kind !=  LayerKind.CURVES ) return;
         var ref = new ActionReference();
         ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
         var desc = executeActionGet(ref).getList(stringIDToTypeID('adjustment')).getObjectValue(0);
         var rawData = desc.getData(stringIDToTypeID('legacyContentData'));
         var str = Hex32(Crc32Str(rawData));
         if( str == '0xF5315AF8' ) return true;
         return false;
    isDefaultLevelsAdjustment();
    function isDefaultLevelsAdjustment(){
         if(app.activeDocument.activeLayer.kind != LayerKind.LEVELS ) return;
         var ref = new ActionReference();
         ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
         var desc = executeActionGet(ref).getList(stringIDToTypeID('adjustment')).getObjectValue(0);
         var rawData = desc.getData(stringIDToTypeID('legacyContentData'));
         var str = Hex32(Crc32Str(rawData));
         if( str == '0x02A5FFD5' ) return true;
         return false;
    isDefaultBWAdjustment();
    function isDefaultBWAdjustment(){
         if(app.activeDocument.activeLayer.kind != LayerKind.BLACKANDWHITE ) return;
         var ref = new ActionReference();
         ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
         var desc = executeActionGet(ref).getList(stringIDToTypeID('adjustment')).getObjectValue(0);
         var rawData = desc.getData(stringIDToTypeID('legacyContentData'));
         var str = Hex32(Crc32Str(rawData));
         if( str == '0x8BE5167D' ) return true;
         return false;

  • PPro cs6 adjustment layer color tint

    I've been working on a project that uses an adjustment layer to apply some secondary color corrections using PPro's Three Way Color Corrector effect. I used just two -- one for a particular shade of red-orange (it's a plastic mixing bowl), and one for a narrow range of blues used in some product packaging (they were fluorescing under the fluorescent lights in a class room). Both of these corrections are narrow (small range of hues and saturations, and a somewhat larger range of luninance values), and the action is simply to lower the saturation to get these specific colors down to broadcast safe levels (as seen on PPro's vectorscope). Since these colors show up quite often in the video footage, and are quite isolated from all the other colors in the scene, I applied them to the whole video using an adjustment layer. Which is one of the intended uses of adjustment layers, yes? And it works beautifully, as expected.
    So far so good. I look at this on my monitor, and it looks fine. I take my laptop to a plasma HDTV and look at it there, and it's spot on.
    Then I used dynamic link to send the project to Encore for DVD output. I worked on menus for a while, and didn't pay much attention to the footage since I had (more or less) edit lock. When I sat down to actually watch one of the more or less complete DVDs, I noticed that the color wasn't right. It was darker and greener than I remembered (this on that same plasma screen HDTV). So I dragged the laptop back, and sure enough, it's darker and greener now.
    To shorten the story, turns out the adjustment layer was the cause. I could turn it on and off using the little eyeball thingie on the timeline, and the adjustment layer is now effecting the entire image and not just the narrow range of reds and blues that are in the secondary color corrections. So I saved the two secondary color corrections as a preset and deleted the adjustment layer. Then I created a new adjustment layer and applied that preset. Boom, problem gone. No more green tint. The same secondary colors as before are under control. What's up with that?
    Now, I can't reproduce it (or I'd attach some images for y'all to look at). But I saw it go by. And I've seen a couple of references to something similar to this in searching the 'net for more information. But only a couple.
    So... Anyone seen anything like that? Or am I just halucinating again? If you've seen it or heard about it, what was the cause? And did it have anything to do with Encore?
    Win7 fully patched
    Production Premium cs6 fully patched
    Project using PPro, AE, Audition, Photoshop, and Encore, mostly by dynamic linking.
    Bruce Watson

    There is a very common misstatement and misunderstanding of how adjustment layers work, which I'll repeat here: "Applying an effect to an adjustment layer applies the effect to all layers under the adjustment layer."
    That's wrong in a subtle but important way.
    What actually happens is that applying an effect to an adjustment layer applies the effect to the composited result from all of the layers under the adjustment layer.
    This is an important distinction, because it puts the adjustment at a different place in the order of operations in the rendering pipeline.
    Anyway, that's a long and perhaps overly theoretical way of saying that, yes, you may see some difference between applying an effect directly to a bunch of clips compared with applying the effect to an adjustment layer over that same bunch of clips.

  • It's time to fix the Curves adjustment layer

    Many Photoshop users consider the Curves panel to be Photoshop's most important feature. For many Curves users, the Layer panel introduced in CS4 does not offer the speed, the instinctive use, nor the superior results of the older Curves Layer panel. The Curves dialog includes all the features that long-time users rely on. Some of these features have not been included in the Adjustment Layer version. They should all be available in the Layers panel, too.

    Adobe has already done a few things to fix the early complaints about the Curves panel. You can assign a keyboard shortcut to the Targeted Adjustment Tool so that you don't have to click the icon with the mouse. In the Keyboard Shortcut editor, choose Tools from the Shortcuts For menu, then scroll down until you find Targeted Adjustment Tool. There is no shortcut right now, because basically all of them are already in use. You get to pick the shortcut to give up in another part of the program. This shortcut can make it faster to add points by clicking the image (for fans of the old Command-click technique).
    Once your points are added, you can still move them with the arrow keys as you always could. Also (a lot of people don't know this), you can select the next/previous points along your curve by pressing the + or - keys. So if you just need to fine-tune each point, when any point is selected just press + or - to step over to the point you want to adjust and then start hitting the arrow keys.
    If you put these techniques together, it comes very close to the old Command-click and arrow-key techniqes in the old Curves dialog. In the Curves panel you can perform the adjustments described below, using the keyboard to both navigate and adjust the curve points while keeping your eye on the Info panel and the curve shape.
    DMarley wrote:
    The alternative approach is to command-click or shift-command-click on the light point, leave the cursor at that location, and then manipulate the curve point (or points) with the arrow keys. This lets you evaluate changes with the Info panel values which are more reliable than the display appearance. After following the same steps for a dark point, flat sections of the curve can repaired by adding additional points and dragging to straighten the curve throughout the range of the important image areas. The focus should be the Info panel numbers and the shape of the curve.
    Now as far as the size of the graph goes...
    Hudechrome wrote:
    So that there is a qualitative change in how they behave isn't a deal breaker for me unless things like resolution (of the curve change not pixels!) suffers, which in turn is connected to how well one can see and manipulate the curve points. That is where the diminished size of the plot comes into play.
    A lot of people have complained about the smaller size of the Curves panel, but it's only a disadvantage if the Curves panel is left at its default size. If you max out the size of the Curves panel, it turns out that the plot areas in the old Curves dialog and the new Curves panel are both 256 x 256px...exactly the same!

  • Adjustment layer bug - or is it just me?

    Somebody please try this and tell me if it's a bug or just me ...
    Create an adjustment layer over some video -- any video.
    Add 2 effects to the Adj Layer: Fast Blur and Levels.
    Set blurriness to 50. Set RGB White Input Level to 50.
    Now you should see Blur and Levels applied. All good so far.
    Now add some keyframes so the blurriness animates.
    How's it going?
    On my system, as soon as I try to animate 1 or more of the effects, they stop working entirely.
    This appears to be a bug. Or am I missing something?
    My workaround has been to use TWO separate Adj Layers on top of each other, but that is cumbersome and annoying.
    If anyone else experiences this, please file a bug report so we can get this resolved!
    Here's the link: https://www.adobe.com/cfusion/mmform/index.cfm?name=wishform
    You can just paste in the body of this post

    I tried the approach you've outlined.  I'm able to see the original effects on my clip as it plays, but the bluriness value doesn't animate.  I also tried using Gaussian Blur.  Same result.  I tried changing the order of effects.  Still didn't animate.
    I haven't used adjustment layers too much, yet.  I did use them on a project I finished last week, however.  I never ran into this on that project since, in my case, I wanted to keep my effects on separate adjustment layers anyway.
    But good to know there's another bug, or just the way it was built.  Maybe it's a feature request. 

  • Adjustment layer: solid fill

    Hi I'm looking for a way to create an adjustment layer kind :"solid fill"  with applescipt.
    It should have a fill with an Lab color (eg; L= 20, a=10, b=13)
    Code:
       tell application "Adobe Photoshop CS3"
           tell current document
              set newLayer to make art layer with properties {name:"MyInkName", kind:solid fill layer, color:{class:Lab color, value_L:20, value_a:10, value_b:13}}
             end tell
      end tell
    error:
    You can only change the layer's kind to text or normal.
    Thanks,
    Koen

    I don't know java script.
    Also I get the lab values from an excel sheet with applescript.
    I found this java code but it needs the be changed:
    1) I want lab values and the this code generates an RGB color
    2) I need to input the lab values from applescript
    How can I do this?
    Tnx
    tell application "Adobe Photoshop CS3"
    activate
      do javascript "var id115 = charIDToTypeID( \"Mk  \" );
        var desc21 = new ActionDescriptor();
        var id116 = charIDToTypeID( \"null\" );
            var ref8 = new ActionReference();
            var id117 = stringIDToTypeID( \"contentLayer\" );
            ref8.putClass( id117 );
        desc21.putReference( id116, ref8 );
        var id118 = charIDToTypeID( \"Usng\" );
            var desc22 = new ActionDescriptor();
            var id119 = charIDToTypeID( \"Type\" );
                var desc23 = new ActionDescriptor();
                var id120 = charIDToTypeID( \"Clr \" );
                    var desc24 = new ActionDescriptor();
                    var id121 = charIDToTypeID( \"Rd  \" );
                    desc24.putDouble( id121, 9.999847 );
                    var id122 = charIDToTypeID( \"Grn \" );
                    desc24.putDouble( id122, 39.999390 );
                    var id123 = charIDToTypeID( \"Bl  \" );
                    desc24.putDouble( id123, 49.999237 );
                var id124 = charIDToTypeID( \"RGBC\" );
                desc23.putObject( id120, id124, desc24 );
            var id125 = stringIDToTypeID( \"solidColorLayer\" );
            desc22.putObject( id119, id125, desc23 );
        var id126 = stringIDToTypeID( \"contentLayer\" );
        desc21.putObject( id118, id126, desc22 );
    executeAction( id115, desc21, DialogModes.NO );"
    end tell

  • Applying an adjustment layer / or adjustment TO a layer in a grayscale image is NOT happening!

    I'm a long time user of Photoshop, but must admit to being stumped here. I have a very high resolution scanned image from a B&W antique engraving, and I'm trying to "open up" some of the lines to bring out the details in the engraved image while keeping the image as close to the "line art" B&W of the original as possible.
    I have the image now "cleaned up," having taken out the yellow color casts, etc., and have a grayscale 8-Bit image in the Photoshop file.
    I've discovered that I can use an adjustment TO the layer itself, or an adjustment layer on the layer in the grayscale image to take away some of the density and "open up" the line art a little, so it has better details by effectively "choking" the dark lines back to make them less thick and dense.
    Here's the thing, though: 
    When I tried making the adjustments via image > adjustments > levels DIRECTLY ON the layer (instead of using and adjustment layer to achieve this), every time I hit the OK button to accept the adjustments I've made that way, the dialog box closes and the layer seems to revert to looking just the same as it did BEFORE I opened the dialog box to adjust the layer!
    When I try making the adjustments by using an adjustment LAYER, and I try to save the Photoshop image as a TIFF file, I find that when I open the saved TIFF image, the layer adjustment I'm seeing in the source Photoshop file has NOT been applied, and the image in the saved TIFF file looks just as dense as the original, unadjusted image in the Photoshop file!
    What am I doing wrong here?  I want to be able to save out that adjusted image as a TIFF file to use in designs, but I cannot seem to save it as a TIFF that actually CONTAINS or reflects these adjustments after having MADE the adjustments! 
    Whazzup?!!

    Well, I took the layered TIFF file you gave to me and opened it in Photoshop, reviewed the adjustment layer in there and its effect -- thanks: you get what I was trying to do -- and then saved it out as a flat TIFF image, and when I reopened it, voila!  it looked like the adjustment had indeed been applied.  So this IS a real head-scratcher indeed.
    I've now tried going back to my source file and doing the same thing.  One thing that I notice is that when I do the Save As of the TIFF with the adjustment layer in it (OR the PSD file, for that matter), when I go to Save YOUR file, the Layer Compression Options are grayed out, but when I go to Save MY file, the Layer Compression Options are active.  I've tried now saving both with RLE layer compression AND As a Copy ("discard layers and save a copy"), and neither works.
    I noticed, too, that your file had the layer below the adjustment layer still as a "Background," instead of a named layer, so I went back and applied an adjustment layer to a copy of my TIFF file, leaving the image in its layer as a Background layer, and still this did not work.
    The only other difference I saw between your TIFF file and mine, is that mine contained transparency, as I've silhouetted away a portion of the image to isolate the central image of the scanned engraving. But even when transparency is not a factor (i.e. I go back and start with a flattened, nontransparent image layer of my TIFF file with a single Background Layer, and I apply the adjustment layer to that, I get the compression options grayed out on Save, and STILL the saved TIFF image I get out of it has "reverted" to the unadjusted appearance.

Maybe you are looking for

  • Help with rsnapshot please (mysql)

    Hello, I'm trying to configure rsnapshot to backup my server over ssh. I need to backup some directories and mysql dabase. So far I've got everything working but the mysql part. Its a bit unclear where the problem might be from the logs even with log

  • Is there a "Safari Alert" phishing scam that asks you to call tech support at 844-877-7978

    Is there a "Safari Alert" phishing scam that asks you to call tech support at 844-877-7978

  • SAP B1 capacity

    Dear All, i have one client who might consider to implement SAP B1. The potential risk is: they have around 400-500K item ( no serial no/ batch number is needed); around 4-5 warehouses. Monthly transactions are not many. So, could anyone share with y

  • Show progress bar and percents when packaging a native installer with adt packager

    Hello, Below is a simple example using the AIR's NativeProcess for compiling an air application into a native installer... Everything works fine, so at the end of the NativeProcess, the native installer (*.exe) is created... In this case, the applica

  • TS3147 Canon printer will not scan with OS X 10.8

    I have a Canon MX870 printer. When I upgraded to OS X ver 10.8, my scanner wouldn't work.   When I opened Canon's MP Navigator 2.2, a window opens & says "MP Navigator EX quit unexpectedly".   I downloaded the driver for 10.8 from Canon.  So I now ha