Recreating merged curves layer by guesswork

Hi folks, I have a picture I once added a curves adjustment layer to. Unfortunatley I don't have the .psd anymore, only a composite .png (the final image) and the source image.
I tried to recreate the curves adjustment layer on top of the source image and compare it to the final image, but I don't get anywhere close to it. I must say though, that generally speaking I have decent curves skills I would say, I intuitively know how they react and affect the output. But the curves layer I used back then involved independent R,G and B curves plus a RGB curve, with about 3 to 4 control points each.
So intuition and guesswork didn't get me anywhere, that's why I was wondering if there was something like a more strategic method defined by rules which would inevitably lead to the correct result if followed correctly ?
If not, is there a different way of recreating the final image from the source image?
Many thanks.

If its just one curve, you can probably do it. But all three, plus a master adjustment might prove too much if the change were drastic. Still worth a go. Even if you just place the 4 color samplers in quarter tones, you might have some luck.
As I said above, it doesn't matter whether it's 1 or 3 curves, because
the RGB channels are treated independently (both by color picker and the
curves layer). The master adjustment is more problematic, right,
but theoretically it shouldn't be a problem either, because two curves
can be "merged" ... well, not in Photoshop (I might suggest that as a
feature one day), but mathematically.
Curves are functions. Take an easy function like f(x) = 1.5*x + 2x
this equates to: f(x) = 1.75 * x
(where x = input and f(x) = output in Photoshop curves adjustment)
I have started working with this method and so far it looks promising,
hope it turns out right
I'll let you know
You inspired me to finally get at what Martin Evening was doing below. If you only had a gray strip in each channel...
http://photoshopnews.com/2007/09/05/how-to-express-blend-modes-as-curves/
Looks very interesting. I'll have a look at it one rainy day ...

Similar Messages

  • Color sampler onto curve layer?

    I believe I knew how to do this but the brain cell that had the information must have died......
    I BELIEVE I used to take the color sampler and put a sample on my image. Then I created a curves layer. AND, by holding some combination of shift/ctrl/alt and clicking the color sample, the values would transfer to the red,green, and blue layers of my curves layer. From there I could make adjustments...
    In CS4 I'm trying to do this, and I can't get it to work... It isn't the same as using the eyedroppers on the curve OR the hand above the eyedroppers. It actually copied the color sample values onto the individual color channels..... How do I do this in CS4?

    OK, I may just be having an extraordinarily stupid day, so bear with me..........
    The url's in the previous reply don't work any more - I presume this is because the forums have been reorganized?
    But, beyond that - here's what I RECALL doing in the past.......................
    In my image, create a color sampler point using the color sampler tool.
    Create curve adjustment layer and make that layer the current layer.
    Go back to my image and press ctrl+shift and click on the color sample.
    This would put the rgb values (puts a point on the curve) from the color sample on the red, green, and blue channels of the curves layer.
    After reading the last couple replies, I did the same thing.  And I went "back to my image" and clicked on
    the color sample.  I'm STILL not getting the values on my curve layer......
    What am I missing 'cause this can't be as difficult as I'm making it.........?

  • Creatiing curves layer in Photoshop CS2

    Anyone know the applescript command(s) for creating a curves layer in Photoshop? I can create a layer but not a curves layer with the following:
    tell application "Adobe Photoshop CS2"
    make new art layer with properties {kind:curves layer} at current document
    end tell
    I can't find any documentation regarding this.
    Pedro

    Hello
    Try something like this. (Not tested)
    --SCRIPT
    tell application "Adobe Photoshop CS2"
    tell document 1
    make new art layer at end with properties {kind:curves layer}
    end
    end tell
    --END OF SCRIPT
    cf.
    http://partners.adobe.com/public/developer/photoshop/sdk/index_scripting.html
    AppleScriptReferenceGuide.pdf
    Regards,
    H

  • Query Curves Layer for current settings

    Hi All,
    I am trying to work out how to query a curves layer for it's current settings. I have used the script listner to capture the code on how to apply settings but can't work out how to query the settings. The output from the script listner when applying new settings is as follows:
    // =======================================================
    var idsetd = charIDToTypeID( "setd" );
        var desc19 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var ref13 = new ActionReference();
            var idAdjL = charIDToTypeID( "AdjL" );
            var idOrdn = charIDToTypeID( "Ordn" );
            var idTrgt = charIDToTypeID( "Trgt" );
            ref13.putEnumerated( idAdjL, idOrdn, idTrgt );
        desc19.putReference( idnull, ref13 );
        var idT = charIDToTypeID( "T   " );
            var desc20 = new ActionDescriptor();
            var idAdjs = charIDToTypeID( "Adjs" );
                var list3 = new ActionList();
                    var desc21 = new ActionDescriptor();
                    var idChnl = charIDToTypeID( "Chnl" );
                        var ref14 = new ActionReference();
                        var idChnl = charIDToTypeID( "Chnl" );
                        var idChnl = charIDToTypeID( "Chnl" );
                        var idCmps = charIDToTypeID( "Cmps" );
                        ref14.putEnumerated( idChnl, idChnl, idCmps );
                    desc21.putReference( idChnl, ref14 );
                    var idCrv = charIDToTypeID( "Crv " );
                        var list4 = new ActionList();
                            var desc22 = new ActionDescriptor();
                            var idHrzn = charIDToTypeID( "Hrzn" );
                            desc22.putDouble( idHrzn, 0.000000 );
                            var idVrtc = charIDToTypeID( "Vrtc" );
                            desc22.putDouble( idVrtc, 0.000000 );
                        var idPnt = charIDToTypeID( "Pnt " );
                        list4.putObject( idPnt, desc22 );
                            var desc23 = new ActionDescriptor();
                            var idHrzn = charIDToTypeID( "Hrzn" );
                            desc23.putDouble( idHrzn, 127.000000 );
                            var idVrtc = charIDToTypeID( "Vrtc" );
                            desc23.putDouble( idVrtc, 127.000000 );
                        var idPnt = charIDToTypeID( "Pnt " );
                        list4.putObject( idPnt, desc23 );
                            var desc24 = new ActionDescriptor();
                            var idHrzn = charIDToTypeID( "Hrzn" );
                            desc24.putDouble( idHrzn, 255.000000 );
                            var idVrtc = charIDToTypeID( "Vrtc" );
                            desc24.putDouble( idVrtc, 255.000000 );
                        var idPnt = charIDToTypeID( "Pnt " );
                        list4.putObject( idPnt, desc24 );
                    desc21.putList( idCrv, list4 );
                var idCrvA = charIDToTypeID( "CrvA" );
                list3.putObject( idCrvA, desc21 );
            desc20.putList( idAdjs, list3 );
        var idCrvs = charIDToTypeID( "Crvs" );
        desc19.putObject( idT, idCrvs, desc20 );
    executeAction( idsetd, desc19, DialogModes.NO );
    I want to query the Hrzn and Vrtc parameters for 0, 127 and 255 on an existing curves layer.
    Any help in working out how to do this would be greatly appreciated.
    Thx in advance.

    This is a bit of a hack but it should give you a place to start.
    // Works with RGB or CMYK images.
    // Does not work at all with greyscale, or indexColor
    // Does not work correctly with Lab
    function convertBCD( num ){
        var res = new Array;
        if(num > 16 ){
            res.unshift(1);
            num = num - 16;
        }else{
            res.unshift(0);
        if(num > 8 ){
            res.unshift(1);
            num = num - 8;
        }else{
            res.unshift(0);
        if(num > 4 ){
            res.unshift(1);
            num = num - 4;
        }else{
            res.unshift(0);
        if(num > 2 ){
            res.unshift(1);
            num = num - 2;
        }else{
            res.unshift(0);
        if(num == 1 ){
            res.unshift(1);
        }else{
            res.unshift(0);
        return res;
    function getCurve( numberOfPoints ){
        this.getPoints = function(){
            this.tempArray = new Array;
            this.tempArray.push( rawDesc.charCodeAt( pointer ) );
            pointer = pointer + 2;// set pointer to next point
            this.tempArray.push( rawDesc.charCodeAt( pointer ) );
            return this.tempArray;
        this.pointsArray = new Array;
        for( var i = 0; i < numberOfPoints; i++ ){
            pointer = pointer + 2;// next point
            this.pointsArray.push( this.getPoints() );
        pointer = pointer + 2;// next curve
        return this.pointsArray;
    var ref = new ActionReference();
    ref.putEnumerated( charIDToTypeID( 'Lyr ' ), charIDToTypeID( 'Ordn' ), charIDToTypeID( 'Trgt' ) );
    var rawDesc = executeActionGet( ref ).getList( stringIDToTypeID( 'adjustment' ) ).getObjectValue( 0 ).getData( stringIDToTypeID( 'legacyContentData' ) );
    var pointer = 2;// used to read rawData similar to reading a file
    var flag = rawDesc.charCodeAt( pointer );// char at offset 2 always == 1 so use to validate data
    if( flag != 1 ) forceError;// unknown problem with rawData
        pointer = 6;// update pointer to BCD byte
        var bcd = rawDesc.charCodeAt( pointer );
        if( bcd < 0 || bcd > 31 ) forceError;// check for valid value
        if( bcd == 0 ) forceError;// an empty adjustment - no curves to process
        var bcdArray = convertBCD( bcd );
        var numberOfCurves = bcdArray.toString().match(/(1)/g).length;
        var curvesArray = new Array;
        pointer = 8;// set pointer to start of curve data
        for(var i = 0; i < numberOfCurves; i++ ){
            var numberOfPoints = rawDesc.charCodeAt( pointer );
            curvesArray.push( getCurve( numberOfPoints ) );
    // now need to map rawData curves in curvesArray to known channel curves
    var acvArray = new Array;
    if( bcdArray[0] == 1 ) {
        acvArray.push( curvesArray.shift() );
    } else {
        acvArray.push( [ [0,0],[255,255] ] );
    if( bcdArray[1] == 1 ) {
        acvArray.push( curvesArray.shift() );
    } else {
        acvArray.push( [ [0,0],[255,255] ] );
    if( bcdArray[2] == 1 ) {
        acvArray.push( curvesArray.shift() );
    } else {
        acvArray.push( [ [0,0],[255,255] ] );
    if( bcdArray[3] == 1 ) {
        acvArray.push( curvesArray.shift() );
    } else {
        acvArray.push( [ [0,0],[255,255] ] );
    if( bcdArray[4] == 1 ) {
        acvArray.push( curvesArray.shift() );
    } else {
        acvArray.push( [ [0,0],[255,255] ] );
    if(app.activeDocument.mode == DocumentMode.RGB){
        var cNames = ['RGB','Red','Green','Blue'];
        for(c=0;c<acvArray.length-1;c++){
            alert(cNames[c]+': '+acvArray[c]);
    if(app.activeDocument.mode ==  DocumentMode.CMYK){
        var cNames = ['CMYK','Cyan','Magenta','Yellow','Black'];
        for(c=0;c<acvArray.length;c++){
            alert(cNames[c]+': '+acvArray[c]);

  • Marking points on a curves layer

    ive always adjusted dynamic range by doing a CURVES layer
    then alt-clicking on a photo to mark the points on the curve, then
    stretching the points apart. that was cs3...
    now in cs4 that no longer works; i cannot alt-click on photos
    to mark points on a curve, i have to add a step of clicking on that
    'pointer-finger' icon in the curves dialog in order to mark points
    (personally the old way shouldve not been removed; 'adding' a step
    to mark points is not really progress to me).
    now that theyve added an extra step of having to click on the
    finger-point icon to mark points on a curve, is there a way i can
    add this icon to the configurator?
    AND
    is there a bit of coding which can allow someone at least to
    mark a point on the curve AND mark that same point with a color
    sampler point? that way i can see on the curve where i am as well
    as see on the photo where i am; otherwise i have to mark it on the
    curve than mark that same point again with the color sampler
    point....this option shouldve been some ALT or CTL addon to marking
    curve points, so one can do both at once. so can this be done with
    a single configurator tool, marking both at once?
    tx for anyone who finds the solution, unless there is some
    way of marking points on a curve and im just overlooking it, all i
    know is the old quick way no longer works...

    I agree Gary that in some ways the new curves is worse than
    the old CS3 modal curves dialog, for the reasons you have said. Did
    you know that you can still bring up the old curves dialog? which
    still has the command place points shortcut, and the control TAB
    shortcut to switch between points - if you record an action in CS3
    and read the action into CS4 yoyu will find it brings up the old
    dialog. These actions can of course be assigned to F key shortcuts.
    There is also a configurator panel that John Knack put on his blog,
    which has buttons to do the same thing.
    Incidentally its the command key and not the option key that
    used to place points

  • Curves layer in new PSE?

    I usually use Photoshop CS for my editing, but I'm buying a laptop that is not as powerful as my desktop, so was thinking of going with a photo editor that is a bit 'lighter' that PS, so looking at PS Elements.
    I understand that you can create files with layers, and that PSE includes a few adjustment layers as well; and also that you can apply a full range of blending options (screen, multiply, overlay, soft light, hue, color, etc.). I have a few questions:
    Does the newest version of PSE include a curves adjustment layer? And if not, does it at least have a Curves adjustment, even if not as a layer adjustment? and/or I've heard of some plug-ins that provide a curve feature--are these any good?
    Does PSE save images as .PSD files, and if yes, I assume that I can open them in PS too, is that right?
    Does PSE have a High Pass filter?
    Are there any limits to the file depth: 8-bit, 16-bit, etc. and can I work in AdobeRGB color space?
    Finally, is there any file size limits in PSE, either the file or the image size?
    As an aside to all this, I wish Adobe would make this type of basic information more easily available. They seem to be caught up in providing us with so much fluff on their website, that they don't give us the information we need.
    Best, David.

    Does the newest version of PSE include a curves adjustment layer? And if not, does it at least have a Curves adjustment, even if not as a layer adjustment? and/or I've heard of some plug-ins that provide a curve feature--are these any good?
    PSE has an odd curves tool, called color curves that doesn't create an adjustment layer. You can use one of the many add-on toolsets to add a curves adjustment layer to PSE, but it will always be for the combined RGB channel, so of limited use. In windows, the free Smart Curve filter is good, but there is no mac equivalent.
    Here is a screenshot of the PSE color curves dialog:
    Does PSE save images as .PSD files, and if yes, I assume that I can open them in PS too, is that right?
    Yes.
    Does PSE have a High Pass filter?
    Yes.
    Are there any limits to the file depth: 8-bit, 16-bit, etc. and can I work in AdobeRGB color space?
    You can work in Adobe RGB and you can use both 8 and 16 bit files, but the use of layers and artistic filters on 16 bit files is still severely limited in PSE. It's about where PS was back in CS1 in that respect.
    Finally, is there any file size limits in PSE, either the file or the image size?
    In the editor the limit is 30,000 px per side. For organizer, see:
    http://helpx.adobe.com/photoshop-elements/kb/maximum-image-size-limits-photoshop.html
    I would suggest doing the trial and giving it a good hard workout. Ask here if you have more questions. Adobe's attempts to simplify the interface mean that it's not always easy to know what all is available, even with the program open in front of you.

  • Colour changed after layer merge or layer flatten

    Hi All,
    After making several adjustment layers, the layer merge is performed. However, it is observed that the colour changed after layer merging. It is confirmed with the histogram. This phenomenon also happens in layer flatten. Any solution?

    Not sure if this is related, but a previous post had color shift when he converted from RGB to any other profile and then back to RGB. Figured it was a rendering problem. Although he had latest video drivers he went back to previous one and solved the problem.
    By any chance did this start after a driver upgrade?

  • How do I disable smoothing when merging flat layer(pixel art) with a 3d object in Photoshop CC 2014?

    After doing some painting on a gun in cs:go, I now need a part of the painting to be pixel perfect, but I can't seem to find a way of stopping the automatic smoothing whenever I merge the pixel art with an 3D object.
    Pre-Merge
    After Merge

    I only see the normal texture filtering. Seems like you have a fundamental misunderstanding here about how 3D works - "pixel perfect" has no meaning for 3D textures since UV space is parametric and has by itself in theory infinite resolution, so any texture will be fit into this range and inevitably a single pixel in the texture can cover more than a pixel on screen or more than a square milimeter on a 3D object. If you want "sharp" textures, you increase the texture resolution, which, if you realyl want that pixely look would be doen using the nearest neighbor method. Regardless, once you zoom in at some point you will see fuzzy edges/ pixels again. It's in the nature of the thing.
    Mylenium

  • How to Recreate the Business layer for Deleted Universe

    Hi ,
    I have moved the universe from DEV to PROD insted of copy. after MOVE i have lost the universe from DEV folder then the reports pointing to the DEV are not working . Now my DEV universe is moved , there is no universe in DEV Folder then i have placed my back up universe in to DEV folder and returns with the error named "You do not have the right to access data returned by this universe. (Error: INF )" , If i try to edit the qurey returns with error named "No business layer sent back from server"  and i try to change source of my DEV reports but the Change Source option is disabled.
    The below options i have tried
    1. Refresh Structurre of universe and Exported
    2. Request the universe and connection access from BO admin team (They have refused)
    Please suggest me if there any work around.
    Thanks in advanse.
    Regards
    MKR

    Grant permission to the user on top of the universe, universe connection , folders and reports under the folders.
    Before doing this login with admin account and test running of the reports. if there are no issues with admin then just grant the user access. its simple

  • __Is there a way to 'merge' multiple curves into a single curve?

    __Is there a way to 'merge' multiple curves into a single curve?
    By this I mean I have file with 2-12 curve layers - I wanted to 'merge' the curves so that I can end up with a single curve with the attributes of many. Maybe is there a script that would do this?

    I don't mean to be critical, but how do you get to a situation where you have 12 successive Curves layers?
    The advantage to a Curves layer is that you can adjust and re-adjust it to your heart's content.
    If you're habitually adding new Curves layers one over the other, maybe you should re-evaluate your process of working...  Perhaps the way you're thinking you should just work at a high bit depth and do repeated Curves operations on the pixels?  Or put some time into retraining yourself to not add a new Curves layer but to manipulate the one that's already there.  There are some nice new enhancements (e.g., the "finger" subtool that allows you to choose a spot in the image and manipulate that part of the curve).
    Again, I'm not trying to criticize you, just looking to see if maybe there's a way to avoid getting to the point where you need to combine Curves in the first place, since there's no direct "Merge Curves" capability, outside of just stamping a set of image and adjustment layers into pixels.  For completeness I suppose I should mention how to do that...  You can Stamp any combination of visible layers into a single layer of pixels (effectively combining all the Curves layers et. al.) by pressing Control - Shift - Alt - E.
    -Noel

  • 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;

  • Can't click drop-down lists in curves adjustment layer

    Odd behavior in released x64 version of CS6 for Windows: on my laptop (ASUS G73S with 1.5 gb nVidia GeForce video), when I crop an image, the drop-down menus in a curves adjustment layer become unclickable. But I can still access the RGB channels using the Alt + 3, 4 and 5 shortcuts. This behavior doesn't occur on my workstation, and if I don't crop the image, the drop-down menus work fine. I have the crop tool set to delete pixels. Also, if I apply curves directly (not with an adjustment layer), the dialog box works OK. And the other adjustment layers seem to be working, too. It's only the curves layer that's doing this.
    Any ideas what this could be? I'm wondering if I should report it as a bug.

    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

  • 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!

  • Issues with merging layers with layer styles

    Just downloaded CS6 Photoshop off the creative cloud and the merge layer command does not work. What is happening is there is one layer with a layer style then a shape layer and when I hit Cmd E it merges the layers but the layer style will not merge with it. I was chatting it up and everything they recommended did not work. It works on all my other co-workers computers and we are all on the cloud. I tried renaming pref. folder, settings folder, re-installing, holding down shft+option+cmd on start up. I also created a test account but that turned out to be a major inconvenience. Once logged into the account there is nothing there. The suggestions just started getting more ridiculous as chat proceeded. Nothing.
    Has anyone experienced this issue?
    Does anyone have a solution where I don't have to create a whole new admin account just to see if CS6 Photoshop works correctly?
    P.S.
    Adobe customer portal is about worthless.

    Get Rich or Die Tryin wrote:
    Just downloaded CS6 Photoshop off the creative cloud and the merge layer command does not work. What is happening is there is one layer with a layer style then a shape layer and when I hit Cmd E it merges the layers but the layer style will not merge with it. I was chatting it up and everything they recommended did not work. It works on all my other co-workers computers and we are all on the cloud. I tried renaming pref. folder, settings folder, re-installing, holding down shft+option+cmd on start up. I also created a test account but that turned out to be a major inconvenience. Once logged into the account there is nothing there. The suggestions just started getting more ridiculous as chat proceeded. Nothing.
    There are two merge layers type commands  one is merge down involves only two layers and another that is merge visible layers.  In my opinion there is a problem with the way merge down is implemented. When you use merge down if the bottom layer in the merge down has a layer style the merged layer also has this layer style attached.  This means that pixels from the layer merged into it will be effected by this layer style.  The result may well not look like the composite looked before the merge. The will also happen in CS5. Merge visibile layer works the correct way in my view as the merge progresses the top two layers are merge by applying any layer masks and layer styles first and merging the two layers the resulting layer has no layer masks and no layer style. This result is then merged with the next lower layer with its masks and style applied first. The result is a single layer without mask and style that looks like the original composite view.  If your having the problem with CMD|CTRL+E and the result has a layer style try turning  the layer style visibility off see if that helps.  If it helps some  backup to before the merge down  use merge visible or first rasterzise the bottom layer to be merged.

  • Adding a curves adjustment layer

    In CS5:
    is there any difference to adding a curves adjustment layer from the adjustment panel or the layers panel?
    Thanks.

    Doing it from the Layer Panel’s pop-up menu creates a Curves Layer and opens the Adjustments Panel if it is not open yet, so apart from the different triggering itself I see no difference.

Maybe you are looking for