Batch HDR Merging/Toning Script

I've seen a number of different posts on these forums about trying to do this and I never really found a complete and suitable solution. It also has really annoyed me that adobe never implemented this (and it's not possible to do with actions because the action just runs a script and you can't record the HDR toning settings, the dialog always pops up, its in the script). So I finally had some time to get my hands dirty with ExtendScript and I have created a fully featured script complete with UI that allows batch creation of HDR tonned images in photoshop.
The code I got working from various snipets of code I found around the 'net and single stepping through the MergeToHDR.jsx script that is built into photoshop.
This has only been partially tested on photoshop CC on a mac. Hopefully I made it portable enough and it will work on windows and older versions. I don't think the MergeToHDR script has changed much in the last several versions (and that is mainly what I call to do the work) so I think it should work. If you have issues please let me know.
My motivation for this script was coming up with a way to do batch HDR toning for timelapse and so this script's features lean toward using it for that end. I really didn't want to buy another separate program for doing this like photomatix, when I knew it should at least be possible to do in photoshop.
I uploaded the script to github:
https://github.com/davidmilligan/PhotoshopBatchHDR/blob/master/Batch%20HDR.jsx
How to use:
Drop the script in the '[photoshop folder]/presets/scripts' folder and restart photoshop if it is already running.
The script should appear as a menu item under File>Automate>Batch HDR...
A dialog will appear where you specify all the settings for the batch
Input Section:
Click browse and select the source folder that contains the images to be merged/toned
Specify "Number of Brackets" this is how many separate images to group into a single HDR output image (the script will group the images in the source folder in order based on this parameter). You can use a value of 1, which means each image in the source folder is separate and will be toned and output. (I find that many times when shooting RAW, 14 bits is ample to capture the full dynamic of the scene, so I do not waste storage space and shutter acutations using more than one exposure, just make sure to ETTR, also post-processing with this script will be faster)
If there are other files in your source folder (for example .xmp files) that you need to exclude you can specify a filte. For example: *.cr2
Typically for timelapse you are using a tripod and do not need to have photoshop align the images, but I provided that capability for anyone who might need it b/c it was easy to enable. Note that enabling this will make the process MUCH slower.
Toning Section:
These settings are all the same as the photoshop HDR toning dialog for "Local Adaptation"
To preview what your toning settings will look like you can select any file(s) in your sequence by clicking "Select File(s)..." under "Preview". The file(s) you select will open and merge (if more than one file). When that's finished you can click the "Update Preview" button to apply the current toning settings and see what they will look like (I can't do the fast, automatic previews like the builtin dialog, sorry - somebody from adobe want to show me how to do this?)
You can see what the settings will look like at another point in your sequence by clicking the "Select File(s).." button again. (I recommend previewing a shot near the beginning, middle, and end of your sequence)
The dialog prevents you from using anything in photoshop while its open so I provided a zoom to allow you to zoom in on the preview
The tone curve you must enter as a comma separated list of points (sorry, ScriptUI is not really adequate to create the graphical histogram overlay for the curves like in the builtin dialog). The points are grouped into x,y pairs so for example: x1,y1,x2,y2,etc. Typically you will start with 0,0 and end with 255,255 (note that 255 is the max, full white). Like the curves tool, x represents the input and y represents the output
Output Section:
Click browse and select a folder for the script to save the output files to
The rest of this section should be self explanitory. NOTE: If you select to output 32bit files, the toning will not be applied, the files will simply be merged into a 32bit HDR image and saved.
Once you have specified the input and output folders the OK button should be enabled, when you are ready, click OK to start the process
Go watch a movie or take a nap, this is going to take a while. The script will display a progress window showing you how far along the proces is (the photoshop progress windows may occasionally appear on top of it, I usually just move them up a little so I can see both)
Limitations:
Only the local adaptation method is supported. It's really the only one I ever use, and I didn't really feel like implementing the other ones, but feel free to modify the script yourself to add this support
You canot load or save presets from the builtin toning dialog. The format of the preset files is binary and would require reverse engineering of the format and it would be very difficult to read to the files in javascript anyway. If it were xml, it would be much easier, alas it is not. Feel free to grab a hex editor and do this yourself. For now you'll just have to copy all of the values of a preset by hand into the dialog if you want to use a preset. If I have more time this is something I might work on.
Preview is slow because it has to do the actual full toning, I don't know a way to do the fast real time previews like the builtin dialog.
I don't think the "Cancel" button on the progress window really works, once running, the script is too busy to register a click, anybody know how I might fix this?
There may potentially be some ways to improve performance of this script in certain scenarios, IDK, but I'm just glad it works
You're welcome Adobe, you can send me a check at:
[REDACTED]
[REDACTED]
[REDACTED]
Please hit me up with comments/suggestions,
David

Thank you for your script, it's very useful.
I just changed a few things :
The Checkboxes didn't work so I changed them :
alignCheckBox.onChanged by alignCheckBox.onClick
deghostCheckBox.onChanged by deghostCheckBox.onClick
smoothEdgesBox.onChange by smoothEdgesBox.onClick
And for best alignment, I changed :
mergeToHDR.mergeFilesToHDR( currentFileList, false, hdrDeghosting ? kMergeToHDRDeghostBest : kMergeToHDRDeghostOff );
by :
mergeToHDR.mergeFilesToHDR( currentFileList, mergeToHDR.useAlignment, hdrDeghosting ? kMergeToHDRDeghostBest : kMergeToHDRDeghostOff );
And lastly :
My language is french so I had to modify loadPreset function because my own preset file contains the string "P a r   d é f a u t" in place of "D e f a u l t" so that the data is shifted.
Here is the code :
#target photoshop
Batch HDR Script by David Milligan
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
// BEGIN__HARVEST_EXCEPTION_ZSTRING
<javascriptresource>
<name>Batch HDR...</name>
<menu>automate</menu>
</javascriptresource>
// END__HARVEST_EXCEPTION_ZSTRING
//these lines import the 'Merge To HDR.jsx' script that is built in to photoshop, we will make calls to that script and some of the scripts that it includes
var runMergeToHDRFromScript = true;
var g_ScriptFolderPath = app.path + "/"+ localize("$$$/ScriptingSupport/InstalledScripts=Presets/Scripts");
var g_ScriptPath = File( g_ScriptFolderPath+'/Merge To HDR.jsx' );
$.evalFile( g_ScriptPath );
//$.level = 2;
//default settings:
mergeToHDR.useAlignment = false;
mergeToHDR.useACRToning = false;
var numberOfBrackets = 3;
var userCanceled = false;
var sourceFolder;
var outputFolder;
var saveType = "JPEG";
var jpegQuality = 10;
var progress;
var statusText;
var progressWindow;
var fileMask = "*";
var outputFilename = "hdr_output_";
var hdrRadius = 100;
var hdrStrength = 0.5;
var hdrGamma = 1.0;
var hdrExposure = 0.0;
var hdrDetail = 100;
var hdrShadow = 0;
var hdrHighlights = 0;
var hdrVibrance = 20;
var hdrSaturation = 30;
var hdrSmooth = false;
var hdrDeghosting = true;
var hdrCurve = "0,0,255,255";
var estTimeRemaining = "";
var previewDoc;
var originalDoc;
function main()
    promptUser();
    //make sure user didn't cancel
    if(sourceFolder != null && outputFolder != null && sourceFolder.exists && outputFolder.exists && numberOfBrackets > 0)
        initializeProgress();
        var files =  sourceFolder.getFiles(fileMask);
        var currentFileList = new Array();
        for(var index = 0;  index < files.length; index++)
            if((index % numberOfBrackets) == numberOfBrackets - 1)
                var start = new Date();
                progress.value = 100 * index / files.length;
                currentFileList.push(files[index]);
                if(userCanceled) break;
                if(numberOfBrackets > 1)
                    statusText.text = "Merging files "+(index-numberOfBrackets+2)+" - "+(index+1)+" of "+files.length + estTimeRemaining;
                    //for braketed exposures use the mergeToHDR script to merge the files into a single 32 bit image
                    mergeToHDR.outputBitDepth= 32;
                    mergeToHDR.mergeFilesToHDR( currentFileList, mergeToHDR.useAlignment, hdrDeghosting ? kMergeToHDRDeghostBest : kMergeToHDRDeghostOff );
                    statusText.text = "Toning files "+(index-numberOfBrackets+2)+" - "+(index+1)+" of "+files.length+ estTimeRemaining;
                else
                    statusText.text = "Loading file "+(index+1)+" of "+files.length+ estTimeRemaining;
                    //otherwise just open the file
                    doOpenFile(files[index]);
                    statusText.text = "Toning file "+(index+1)+" of "+files.length+ estTimeRemaining;
                progress.value = 100 * (index + numberOfBrackets / 2 ) / files.length;
                if(userCanceled) break;
                if(app.activeDocument != null)
                    //apply the actual tone mapping to the HDR image to get it back down to 8 bits
                    doHDRToning();
                //save the result and close
                //TODO: add leading zeros to index in filename
                if(numberOfBrackets > 1)
                    statusText.text = "Saving result "+(index-numberOfBrackets+2)+" - "+(index+1)+" of "+files.length+ estTimeRemaining;
                else
                    statusText.text = "Saving result "+(index+1)+" of "+files.length+ estTimeRemaining;
                if(userCanceled) break;
                doSaveFile(outputFolder.absoluteURI + "/" + outputFilename + ZeroPad(Math.round((index + 1)/numberOfBrackets), 5) );
                activeDocument.close(SaveOptions.DONOTSAVECHANGES);
                //reset our file list
                currentFileList = new Array();
                //calculate time remaining
                var end = new Date();
                var timeElapsed = end.getTime() - start.getTime();
                var mins = timeElapsed / 60000 * ((files.length - index - 1) / numberOfBrackets);
                estTimeRemaining = " | Remaining: " + ZeroPad((mins / 60).toFixed(0),2) + ":" + ZeroPad((mins % 60).toFixed(0),2);
            else
                currentFileList.push(files[index]);
        progressWindow.hide();
function doOpenFile(filename)
    const eventOpen = app.charIDToTypeID('Opn ');
    var desc = new ActionDescriptor();
    desc.putPath( typeNULL, new File( filename ) );
    desc.putBoolean( kpreferXMPFromACRStr, true ); //not sure what this does or if it is needed
    executeAction( eventOpen, desc, DialogModes.NO );
    //if we don't convert the image to 32bit the mergeToHDR script will not tone our image when we call it, it will simply downconvert it to 8 bit
    convertTo32Bit ();
function convertTo32Bit()
    var idCnvM = charIDToTypeID( "CnvM" );
    var desc6 = new ActionDescriptor();
    var idDpth = charIDToTypeID( "Dpth" );
    desc6.putInteger( idDpth, 32 );
    var idMrge = charIDToTypeID( "Mrge" );
    desc6.putBoolean( idMrge, false );
    var idRstr = charIDToTypeID( "Rstr" );
    desc6.putBoolean( idRstr, false );
    executeAction( idCnvM, desc6, DialogModes.NO );
function doSaveFile(filename)
    if(saveType == "JPEG")
        var jpgSaveOptions = new JPEGSaveOptions();
        jpgSaveOptions.embedColorProfile = true;
        jpgSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
        jpgSaveOptions.matte = MatteType.NONE;
        jpgSaveOptions.quality = jpegQuality;
        activeDocument.saveAs(new File(filename), jpgSaveOptions, true /*Save As Copy*/, Extension.LOWERCASE /*Append Extention*/);
    else if(saveType == "TIFF")
        var tifSaveOptions = new TiffSaveOptions();
        tifSaveOptions.embedColorProfile = true;
        activeDocument.saveAs(new File(filename), tifSaveOptions, true /*Save As Copy*/, Extension.LOWERCASE /*Append Extention*/);
    else if(saveType == "TIFF LZW")
        var tifSaveOptions = new TiffSaveOptions();
        tifSaveOptions.embedColorProfile = true;
        tifSaveOptions.imageCompression = TIFFEncoding.TIFFLZW;
        activeDocument.saveAs(new File(filename), tifSaveOptions, true /*Save As Copy*/, Extension.LOWERCASE /*Append Extention*/);
    else if(saveType == "TIFF ZIP")
        var tifSaveOptions = new TiffSaveOptions();
        tifSaveOptions.embedColorProfile = true;
        tifSaveOptions.imageCompression = TIFFEncoding.TIFFZIP;
        activeDocument.saveAs(new File(filename), tifSaveOptions, true /*Save As Copy*/, Extension.LOWERCASE /*Append Extention*/);
    else
        activeDocument.saveAs(new File(filename), undefined, true /*Save As Copy*/, Extension.LOWERCASE /*Append Extention*/);
function doHDRToning()
    //TODO: Reverse engineer the HDR Preset file format and allow user to select a preset file and create the ActionDescriptor from the file
    //create the ActionDescriptor that describes the HDR toning settings to use
    var hdDesc = new ActionDescriptor;
    hdDesc.putInteger( stringIDToTypeID( 'version' ), 6 );//I'm not sure what this does
    hdDesc.putInteger(  kmethodStr, 3 );// the toning method to use, 3 = local adaptation
    hdDesc.putDouble( stringIDToTypeID( 'radius' ), hdrRadius );
    hdDesc.putDouble( stringIDToTypeID( 'threshold' ), hdrStrength );// strength
    hdDesc.putDouble( stringIDToTypeID( 'center' ), hdrGamma );// gamma
    hdDesc.putDouble( stringIDToTypeID( 'brightness' ), hdrExposure );// exposure
    hdDesc.putDouble( stringIDToTypeID( 'detail' ), hdrDetail );
    hdDesc.putDouble( stringIDToTypeID( 'shallow' ), hdrShadow );
    hdDesc.putDouble( stringIDToTypeID( 'highlights' ), hdrHighlights );
    hdDesc.putDouble( stringIDToTypeID( 'vibrance' ), hdrVibrance );
    hdDesc.putDouble( stringIDToTypeID( 'saturation' ), hdrSaturation);
    hdDesc.putBoolean( stringIDToTypeID( 'smooth' ), hdrSmooth );
    hdDesc.putBoolean( stringIDToTypeID( 'deghosting' ), hdrDeghosting );
    //create the tone curve
    var cDesc = new ActionDescriptor;
    cDesc.putString( stringIDToTypeID( 'name' ), 'Default');
    var cList = new ActionList;
    var points = hdrCurve.split(',');
    for(var i = 0; i < points.length; i++)
        if(i % 2 == 1)
            var pDesc = new ActionDescriptor;
            pDesc.putDouble( stringIDToTypeID( 'horizontal' ), points[i-1] );
            pDesc.putDouble( stringIDToTypeID( 'vertical' ), points[i] );
            pDesc.putBoolean( keyContinuity , false );// ?????
            cList.putObject( charIDToTypeID( 'Pnt ' ), pDesc );
    cDesc.putList( stringIDToTypeID( 'curve' ), cList );
    hdDesc.putObject( kclassContour, classShapingCurve, cDesc );
    //call the script that actually invokes the toning plugin
    convertFromHDRNoDialog( outputBitDepth, hdDesc );
function initializeProgress()
    progressWindow = new Window("palette { text:'Batch HDR Progress', \
        statusText: StaticText { text: 'Processing Images...', preferredSize: [350,20] }, \
        progressGroup: Group { \
            progress: Progressbar { minvalue: 0, maxvalue: 100, value: 0, preferredSize: [300,20] }, \
            cancelButton: Button { text: 'Cancel' } \
    statusText = progressWindow.statusText;
    progress = progressWindow.progressGroup.progress;
    progressWindow.progressGroup.cancelButton.onClick = function() { userCanceled = true; }
    progressWindow.show();
function promptUser()
    var setupWindow = new Window("dialog { orientation: 'row', text: 'Batch HDR', alignChildren:'top', \
        leftGroup: Group { orientation: 'column', alignChildren:'fill', \
            inputPanel: Panel { text: 'Input', \
                sourceGroup: Group { \
                    sourceBox: EditText { characters: 40, text: '' }, \
                    sourceBrowse: Button { text: 'Browse' } \
                bracketGroup: Group{ \
                    bracketLabel: StaticText { text: 'Number of Brackets: ' }, \
                    bracketBox: EditText { characters: 2 }, \
                    filterLabel: StaticText { text: 'File Filter: ' }, \
                    filterText: EditText { characters: 5 }, \
                    alignCheckBox: Checkbox { text: 'Align' }\
                    deghostCheckBox: Checkbox { text: 'Deghost' }\
            toningPanel: Panel { text: 'Toning', orientation:'row', alignChildren:'top' } ,\
            outputPanel: Panel { text: 'Output', \
                outputGroup: Group { \
                    outputBox: EditText { characters: 40, text: '' }, \
                    outputBrowse: Button { text: 'Browse' } \
                outputOptionsGroup: Group { \
                    outputFilenameLabel: StaticText { text: 'Filename Format: ' }, \
                    outputFilenameText: EditText { characters: 10 }, \
                    outputFilenamePost: StaticText { text: '00001.jpg' }, \
                saveSettingsGroup: Group { \
                    saveTypeLabel: StaticText { text: 'Save As: ' }, \
                    saveDropDown: DropDownList { }, \
                    jpegQualityLabel: StaticText { text: 'JPEG Quality (1-10): ' }, \
                    jpegQualityText: EditText { characters: 2}, \
                    outputBitDepthLabel: StaticText { text: 'Bit Depth', enabled:false }, \
                    outputBitDepthDropDown: DropDownList { enabled:false }, \
        rightGroup: Group { orientation: 'column', alignChildren:'fill', \
            okButton: Button { text: 'OK', enabled: false } \
            cancelButton: Button { text: 'Cancel' } \
    generateToningPanel(setupWindow.leftGroup.toningPanel);
    //shortcut variables
    var sourceBox = setupWindow.leftGroup.inputPanel.sourceGroup.sourceBox;
    var sourceBrowse = setupWindow.leftGroup.inputPanel.sourceGroup.sourceBrowse;
    var bracketBox = setupWindow.leftGroup.inputPanel.bracketGroup.bracketBox;
    var filterText = setupWindow.leftGroup.inputPanel.bracketGroup.filterText;
    var alignCheckBox = setupWindow.leftGroup.inputPanel.bracketGroup.alignCheckBox;
    var outputBox = setupWindow.leftGroup.outputPanel.outputGroup.outputBox;
    var outputBrowse = setupWindow.leftGroup.outputPanel.outputGroup.outputBrowse;
    var outputFilenameText = setupWindow.leftGroup.outputPanel.outputOptionsGroup.outputFilenameText;
    var saveDropDown = setupWindow.leftGroup.outputPanel.saveSettingsGroup.saveDropDown;
    var jpegQualityText = setupWindow.leftGroup.outputPanel.saveSettingsGroup.jpegQualityText;
    var jpegQualityLabel = setupWindow.leftGroup.outputPanel.saveSettingsGroup.jpegQualityLabel;
    var outputBitDepthDropDown = setupWindow.leftGroup.outputPanel.saveSettingsGroup.outputBitDepthDropDown;
    var outputBitDepthLabel = setupWindow.leftGroup.outputPanel.saveSettingsGroup.outputBitDepthLabel;
    var okButton = setupWindow.rightGroup.okButton;
    var cancelButton = setupWindow.rightGroup.cancelButton;
    var toningPanel = setupWindow.leftGroup.toningPanel;
    var deghostCheckBox = setupWindow.leftGroup.inputPanel.bracketGroup.deghostCheckBox;
    //set default values
    bracketBox.text = numberOfBrackets;
    filterText.text = fileMask;
    //mergeToHDR.useAlignment = true;
    alignCheckBox.value = mergeToHDR.useAlignment;
    deghostCheckBox.value = hdrDeghosting;
    outputFilenameText.text = outputFilename;
    jpegQualityText.text = jpegQuality;
    saveDropDown.add("item", "JPEG");
    saveDropDown.add("item", "TIFF");
    saveDropDown.add("item", "TIFF LZW");
    saveDropDown.add("item", "TIFF ZIP");
    saveDropDown.add("item", "PSD");
    saveDropDown.selection = 0;
    outputBitDepthDropDown.add("item", "8");
    outputBitDepthDropDown.add("item", "16");
    outputBitDepthDropDown.add("item", "32");
    outputBitDepthDropDown.selection = 0;
    //event handlers
    sourceBox.onChange = function()
        sourceFolder = new Folder(sourceBox.text);
        okButton.enabled = sourceFolder != null && outputFolder != null && sourceFolder.exists && outputFolder.exists;
    sourceBrowse.onClick = function()
        sourceFolder = Folder.selectDialog ("Select the source folder");
        if(sourceFolder != null)
            sourceBox.text = sourceFolder.fullName;
        okButton.enabled = sourceFolder != null && outputFolder != null && sourceFolder.exists && outputFolder.exists;
    bracketBox.onChange = function() { numberOfBrackets = bracketBox.text; };
    filterText.onChange = function() { fileMask = filterText.text; };
    alignCheckBox.onClick = function() { mergeToHDR.useAlignment = alignCheckBox.value; };
    deghostCheckBox.onClick = function() { hdrDeghosting = deghostCheckBox.value; };
    outputBox.onChange = function()
        outputFolder = new Folder(outputBox.text);
        okButton.enabled = sourceFolder != null && outputFolder != null && sourceFolder.exists && outputFolder.exists;
    outputBrowse.onClick = function()
        outputFolder = Folder.selectDialog ("Select the output folder");
        if(outputFolder != null)
            outputBox.text = outputFolder.fullName;
        okButton.enabled = sourceFolder != null && outputFolder != null && sourceFolder.exists && outputFolder.exists;
    outputFilenameText.onChange = function() { outputFilename = outputFilenameText.text; };
    saveDropDown.onChange = function()
        saveType = saveDropDown.selection.text;
        jpegQualityText.enabled = saveDropDown.selection.text == "JPEG";
        jpegQualityLabel.enabled = saveDropDown.selection.text == "JPEG";
        if(saveDropDown.selection.text == "JPEG")
            outputBitDepthDropDown.selection = 0;
        outputBitDepthDropDown.enabled = saveDropDown.selection.text != "JPEG";
        outputBitDepthLabel.enabled = saveDropDown.selection.text != "JPEG";
    jpegQualityText.onChange = function() { jpegQuality = jpegQualityText.text; };
    outputBitDepthDropDown.onChange = function()
        outputBitDepth = outputBitDepthDropDown.selection.text;
        toningPanel.enabled = outputBitDepth != 32;
    okButton.onClick = function() { setupWindow.hide(); cleanUpPreviews(); };
    cancelButton.onClick = function() { sourceFolder = null, setupWindow.hide(); cleanUpPreviews(); };
    saveDropDown.onChange();
    outputBitDepthDropDown.onChange();
    setupWindow.show();
function cleanUpPreviews()
    if(originalDoc != null)
        originalDoc.close(SaveOptions.DONOTSAVECHANGES);
        originalDoc = null;
    if(previewDoc != null)
        previewDoc.close(SaveOptions.DONOTSAVECHANGES);
        previewDoc = null;
function generateToningPanel(toningPanel)
    var leftToningGroup = toningPanel.add("group{orientation:'column',alignChildren:'fill'}");
    var rightToningGroup = toningPanel.add("group{orientation:'column',alignChildren:'fill'}");
    var presetGroup = leftToningGroup.add("group{orientation:'row'}");
    var presetDropDown = presetGroup.add("dropdownlist");
    var loadPresetButton = presetGroup.add("button", undefined, "Load Preset");
    var edgePanel = leftToningGroup.add("panel",undefined,"Edge Glow");
    var radiusSlider = createSliderControl(edgePanel.add("group"), "  Radius: ", "px", 0, 500, 0, hdrRadius, function(newValue){ hdrRadius = newValue; });
    var strengthSlider = createSliderControl(edgePanel.add("group"), "Strength: ", "", 0, 4.0, 2, hdrStrength, function(newValue){ hdrStrength = newValue; });
    var edgeGroup = edgePanel.add("group");
    var smoothEdgesBox = edgeGroup.add("checkbox",undefined, "Smooth Edges");
    var detailPanel = leftToningGroup.add("panel",undefined,"Tone and Detail");
    var gammaSlider = createSliderControl(detailPanel.add("group"), "  Gamma: ", "", 0.1, 2.0, 2, hdrGamma, function(newValue){ hdrGamma = newValue; });
    var exposureSlider = createSliderControl(detailPanel.add("group"), "Exposure: ", "", -5.0, 5.0, 2, hdrExposure, function(newValue){ hdrExposure = newValue; });
    var detailSlider = createSliderControl(detailPanel.add("group"), "     Detail: ", "%", -300, 300, 0, hdrDetail, function(newValue){ hdrDetail = newValue; });
    var advancedPanel = leftToningGroup.add("panel",undefined,"Advanced");
    var shadowSlider = createSliderControl(advancedPanel.add("group"), "  Shadow: ", "%", -100, 100, 0, hdrShadow, function(newValue){ hdrShadow = newValue; });
    var highlightSlider = createSliderControl(advancedPanel.add("group"), " Highlight: ", "%",  -100, 100, 0, hdrHighlights, function(newValue){ hdrHighlights = newValue; });
    var vibranceSlider = createSliderControl(advancedPanel.add("group"), "  Vibrance: ", "%",  -100, 100, 0, hdrVibrance, function(newValue){ hdrVibrance = newValue; });
    var saturationSlider = createSliderControl(advancedPanel.add("group"), "Saturation: ", "%",  -100, 100, 0, hdrSaturation, function(newValue){ hdrSaturation = newValue; });
    var toningCurvePanel = leftToningGroup.add("panel{text:'Toning Curve',alignChildren:'fill'}");
    var curveBox = toningCurvePanel.add("edittext", undefined, hdrCurve);
    //right side (preview panel)
    var previewGroup = rightToningGroup.add("panel", undefined, "Preview");
    var selectPreviewButton = previewGroup.add("button",undefined,"Select File(s)...");
    var previewButton = previewGroup.add("button",undefined,"Update Preview");
    var zoomGroup = previewGroup.add("group");
    zoomGroup.add("statictext",undefined, "zoom");
    var zoomBox = zoomGroup.add("edittext { text: '100', characters: 3, enabled: false } ");
    var previewZoomSlider = previewGroup.add("slider { minvalue: 10, maxvalue: 200, value: 100, enabled: false }");
    //default values
    smoothEdgesBox.value = hdrSmooth;
    previewButton.enabled = app.documents.length > 0;
    var presetFiles = getPresetFiles();
    var updateSliders = function()
        radiusSlider(hdrRadius);
        strengthSlider(hdrStrength);
        smoothEdgesBox.value = hdrSmooth;
        exposureSlider(hdrExposure);
        gammaSlider(hdrGamma);
        detailSlider(hdrDetail);
        shadowSlider(hdrShadow);
        highlightSlider(hdrHighlights);
        vibranceSlider(hdrVibrance);
        saturationSlider(hdrSaturation);
        curveBox.text = hdrCurve;
    if(presetFiles.length > 0)
        for(var f in presetFiles)
            presetDropDown.add("item", presetFiles[f].displayName.replace(".hdt",""));
        presetDropDown.selection = 0;
        loadPreset(presetFiles[0]);
        presetDropDown.onChange = function()
            loadPreset(presetFiles[presetDropDown.selection.index]);
            updateSliders();
    //event handlers
    loadPresetButton.onClick = function()
        loadPreset(null);
        updateSliders();
    smoothEdgesBox.onClick = function () { hdrSmooth = smoothEdgesBox.value; };
    curveBox.onChange = function () { hdrCurve = curveBox.text; };
    selectPreviewButton.onClick = function()
        var selectedFiles = File.openDialog("Select file(s) to load for preview", function(){return true;}, true);
        if(selectedFiles != null)
            cleanUpPreviews();
            if(selectedFiles instanceof Array)
                if(selectedFiles.length > 1)
                    mergeToHDR.outputBitDepth= 32;
                    mergeToHDR.mergeFilesToHDR( selectedFiles, false, -2 );
                else
                    doOpenFile(selectedFiles[0].fullName);
            else
                doOpenFile(selectedFiles.fullName);
            originalDoc = app.activeDocument;
            previewButton.enabled = originalDoc != null;
            zoomBox.text = getZoomLevel();
            previewZoomSlider.value = getZoomLevel();
    previewButton.onClick = function()
        if(originalDoc != null)
            var tempOutputBitDepth = outputBitDepth;
            outputBitDepth = 16;
            if(previewDoc != null)
                previewDoc.close(SaveOptions.DONOTSAVECHANGES);
            previewDoc = originalDoc.duplicate("HDR Preview");
            app.activeDocument = previewDoc;
            setZoomLevel(previewZoomSlider.value);
            convertTo32Bit();
            doHDRToning();
            outputBitDepth = tempOutputBitDepth;
            waitForRedraw();
            zoomBox.enabled = previewDoc != null;
            previewZoomSlider.enabled = previewDoc != null;
    zoomBox.onChange = function()
        if(previewDoc != null)
            previewZoomSlider.value = zoomBox.text;
            setZoomLevel(previewZoomSlider.value);
    previewZoomSlider.onChange = function()
        if(previewDoc != null)
            zoomBox.text = previewZoomSlider.value.toFixed(0);
            setZoomLevel(previewZoomSlider.value);
    updateSliders();
function createSliderControl(group,label,postLabel,min,max,round,value,onValueChanged)
    var ignoreChange = false;
    group.add("statictext", undefined, label);
    var slider = group.add("slider",undefined,value,min,max);
    slider.alignment = "fill";
    var box = group.add("edittext",undefined,value);
    box.characters = 6;
    group.add("statictext", undefined, postLabel);
    slider.onChange = function()
        if(!ignoreChange)
            ignoreChange = true;
            box.text = slider.value.toFixed(round);
            onValueChanged(slider.value);
            ignoreChange = false;
    box.onChange = function()
        if(!ignoreChange)
            ignoreChange = true;
            slider.value = box.text;
            onValueChanged(box.text);
            ignoreChange = false;
    return function(newValue)
        slider.value = newValue;
        box.text = newValue.toFixed(round);
//forces a redraw while a script dialog is active (for preview)
var waitForRedraw = function()
    var desc = new ActionDescriptor();
    desc.putEnumerated(charIDToTypeID("Stte"), charIDToTypeID("Stte"), charIDToTypeID("RdCm"));
    executeAction(charIDToTypeID("Wait"), desc, DialogModes.NO);
function getZoomLevel()
    var ref = new ActionReference();
    ref.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
    var desc = executeActionGet(ref);
    return Number(desc.getDouble(stringIDToTypeID('zoom'))*100).toFixed(1);
function setZoomLevel( zoom )
    if(zoom < 1 ) zoom =1;
    var ref = new ActionReference();
    ref.putEnumerated( charIDToTypeID("capp"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
    var getScrRes = executeActionGet(ref).getObjectValue(stringIDToTypeID('unitsPrefs')).getUnitDoubleValue(s tringIDToTypeID('newDocPresetScreenResolution'))/72;
    var docRes = activeDocument.resolution;
    activeDocument.resizeImage( undefined, undefined, getScrRes/(zoom/100), ResampleMethod.NONE );
    var desc = new ActionDescriptor();
    ref = null;
    ref = new ActionReference();
    ref.putEnumerated( charIDToTypeID( "Mn  " ), charIDToTypeID( "MnIt" ), charIDToTypeID( 'PrnS' ) );
    desc.putReference( charIDToTypeID( "null" ), ref );
    executeAction( charIDToTypeID( "slct" ), desc, DialogModes.NO );
    activeDocument.resizeImage( undefined, undefined, docRes, ResampleMethod.NONE );
function ZeroPad(number,numZeros)
    var result = number.toString();
    while(result.length < numZeros)
        result = "0" + result;
    return result;
var getPresetFiles = function()
    var presetFolder = new Folder(app.path + "/Presets/HDR Toning");
    return presetFolder.getFiles("*.hdt");
var loadPreset = function(presetFile)
    if(presetFile == null)
        presetFile = File.openDialog("Select Preset","*.hdt");
    if(presetFile != null)
        var tmpStr = new String();
        var binaryData = new Array();
        presetFile.encoding = "BINARY";
        presetFile.open('r');
        while(!presetFile.eof)
            var ch = presetFile.readch();
            if ( ch.charCodeAt(0) == 0 ){
                tmpStr += ' ';
            else {
                tmpStr += ch;
            binaryData.push(ch.charCodeAt(0));
        presetFile.close();
        if(binaryData.length >= 40)
            // init start position for reading datas
            // start position for english version ( string "D e f a u l t" is in the preset file )
            var startPos = 38;
            if ( tmpStr.search ("P a r   d é f a u t") > -1 ){
                // start position for french preset file version ( string "P a r   d é f a u t" is in the preset file ) (==> + 6 bytes)
                startPos = 44;
            // if your preset file can't be read, try this : open it in notepad to see the string "D e f a u l t" in your language and add the code here to set startPos to 38 + diff between the length of ("D e f a u l t") and length of ("D e f a u l t" in your language)
            var curvePointCount = getUInt16(binaryData, startPos);
            if(binaryData.length >= 104 + curvePointCount * 4)
                var curvePointStr = "";
                for(var i = 0; i < curvePointCount; i++)
                    curvePointStr += getUInt16(binaryData, startPos + 4 + i * 4) + "," + getUInt16(binaryData, startPos + 2 + i * 4) + ((i < curvePointCount - 1) ? "," : "");
                hdrCurve = curvePointStr;
                hdrStrength =  getFloat32(binaryData,8);
                hdrRadius = getFloat32(binaryData, startPos + 10 + 5 * curvePointCount);
                hdrExposure = getFloat32(binaryData, startPos + 34 + 5 * curvePointCount);
                hdrSaturation = getFloat32(binaryData, startPos + 38 + 5 * curvePointCount);
                hdrDetail = getFloat32(binaryData, startPos + 42 + 5 * curvePointCount);
                hdrShadow = getFloat32(binaryData, startPos + 46 + 5 * curvePointCount);
                hdrHighlights = getFloat32(binaryData, startPos + 50 + 5 * curvePointCount);
                hdrGamma = getFloat32(binaryData, startPos + 54 + 5 * curvePointCount);
                hdrVibrance = getFloat32(binaryData, startPos + 58 + 5 * curvePointCount);
                hdrSmooth = getUInt16(binaryData, startPos + 62 + 5 * curvePointCount) != 0;
            else
                alert("Error Loading File", "Error", true);
        else
            alert("Error Loading File", "Error", true);
function getUInt16(byteArray,offset)
    return byteArray[offset] * 0x100 + byteArray[offset + 1];
function getUInt32(byteArray,offset)
    return byteArray[offset] * 0x1000000 + byteArray[offset + 1] * 0x10000 + byteArray[offset + 2] * 0x100 + byteArray[offset + 3];
function getFloat32(byteArray,offset)
    var bytes = getUInt32(byteArray,offset);
    var sign = (bytes & 0x80000000) ? -1 : 1;
    var exponent = ((bytes >> 23) & 0xFF) - 127;
    var significand = (bytes & ~(-1 << 23));
    if (exponent == 128)
        return sign * ((significand) ? Number.NaN : Number.POSITIVE_INFINITY);
    if (exponent == -127) {
        if (significand == 0) return sign * 0.0;
        exponent = -126;
        significand /= (1 << 22);
    } else significand = (significand | (1 << 23)) / (1 << 23);
    return sign * significand * Math.pow(2, exponent);
main();

Similar Messages

  • Bonjour, Dans photoshop cc 2014 je ne peux plus utiliser les fonctions   Automatisation  HDR Merge Script Processeur d'images  Reponse le module javascript n'a pas été trouvé ?

    Bonjour,
    Dans photoshop cc 2014 je ne peux plus utiliser les fonctions
    Automatisation
             HDR
             Merge
    Script
             Processeur d’images
    Reponse le module javascript n’a pas été trouvé ?

    Donc vous êtes passés par les étapes proposées ici. Certains messages sont plus directs et définitifs… Peut-être une piste là.

  • Photomatix plug-in's HDR merged image has suddenly stopped showing up as part of the stack, yet when I repeat the merge it warns that these images are already merged. I have the merged image labeled with a HDR suffix.

    Photomatix plug-in's HDR merged image has suddenly stopped showing up as part of the stack, yet when I repeat the merge it warns that these images are already merged. I have the merged image labeled with a HDR suffix. Worked fine until now. Thanks

    I am not sure what's happening with IE9 (no live site) but I had real problems viewing your code in Live View - until I removed the HTML comment marked below. Basically your site was viewable in Design View but as soon a I hit Live view, it disappeared - much like IE9. See if removing the comment solves your issue.
    <style type="text/css">
    <!-- /*Remove this */
    body {
        margin: 0;
        padding: 0;
        color: #000;
        background:url(Images/websitebackgroundhomee.jpg) repeat scroll 0 0;
        font-family: David;
        font-size: 15px;
        height:100%;

  • CS3: HDR Merge Problem with Canon 50d RAW files

    I recently upgraded from a 20D to a 50D.  I'm running CS3 under WinXPpro with 3GB of RAM.  HDR merge of 3 CR2 files is causing CS3 to generate a program error and crash.  This never happened with my older (smaller) files from the 20D.  Anybody know how to fix this?
    TIA,

    The suggestion was to try an HDR with smaller 50D sRAWs as an *experiment* to see if the size matters more than the camera model.  Another benefit of a 50D would be the 14-bits per pixel instead of 12-bits and an sRAW would have less noise per pixel than a full-size RAW so using smaller sRAW images might work better than a 20D's.
    The "size" being referred to is the dimensions in pixels, not the on-disk size, becasue the in-memory size of an image should be similar whether it comes from a 16-bit TIFF or an 16-bit RAW conversion.
    Merging RAWs will involve ACR during the HDR process, whereas merging TIFFs won't unless you have the setting to prefer ACR for TIFFs, too, which you don't indicate.
    There can be data in the highlights and especially shadows from a RAW that gets thrown away when it's converted to TIFF, so merging RAWs is better than merging from TIFFs.
    I currently have CS4 only on my machine so I forget, but with CS3, does it matter what output size you have set in ACR, when you do an HDR conversion from RAW?  In other words, does HDR using ACR ignore the output size or not?  If not, then perhaps setting a smaller size in ACR (the same area where you set the bit depth and conversion colorspace) would make things work or setting a larger size with 20D images would make them fail.  This is being suggested as a experiment as well, to try to isolate the issue, not necessarily a permanent solution.
    I don't think there is anything inherently wrong with a 50D RAW that would make it not work, but the larger size would use more memory and maybe your machine is getting close to some sort of limit.
    Other suggestions would be to reset your preferences and check your disk(s) with scandisk and/or change your scratch-disk to somewhere else to make sure there's no some corruption keeping the HDR process from working with the larger 50D images, and along those lines, also try purging your ACR cache or moving it to another drive.  You might also try changing the amount of memory available to Photoshop (ram vs scratch-disk) in the Preferences.
    What module does the crash occur in, if the error says?  Is it related to display or something else?

  • LR 6 - Cant see the HDR Merge Option in the menu

    Hi, 
    Just upgraded. Thought I would try the HDR merge, but having watched the video...I have no HDR Merge Option in my menu.
    anyone got any suggestions?

    I had the same problem. Couldn't figure it out, searched, came here.
    I fixed it by:
    1) Open the Creative Cloud application by double clicking the icon in system tray
    2) Double click the Lightroom CC application (note: you might have two Lightroom apps now, 5 and CC). It will prompt you saying that Lightroom needs to upgrade the catalog. Click the upgrade.
    3) The new updated Lightroom will launch.
    Note that old shortcuts will still link to Lightroom 5 - not the new Lightroom CC.
    I am not sure why this 'upgrade' seems to be an entirely new application install and not actually just an upgrade.

  • Photoshop CS6 HDR Merge to HDR Pro SUDDENLY stopped working?!

    Yesterday and in the past HDR Merge to HDR Pro worked through Photoshop CS6 and Bridge.  Suddenly its running then stops before taking me to HDR Adjustment window.  I have installed reinstalled, computer is updated, etc.  Only thing that I can find on this issue is hundreds of other people with the same problem and no solution that is working to get this function working again.

    Exact same problem here.
    CS6 Production Premium and updated.
    Goes all the way through and fails.
    Mine will still work with 2 images and maybe 3, but I have some stacks of 4-7 images. Not working at all.

  • Photoshop stops running during HDR merge

    Hello Photoshoppers
    Hope some one has an answer..During the HDR merge I get a window that tells me that PS has stopped running..Click OK then PS shuts down . This is what I have on the issue so far ..Adobe chat help had me do all kinds of crazy stuff along with updates..The last session they had me download and open their sample pictures and try to merge them. I was infact able to merge them just fine.  Hence since I was able to merge their sample pictures..there is no program issue as they see it... I can merge 2 of my pictures but no more than 2.. My pictures were taken with a Canon T2i ,  a tripod and remote shutter device was used.. The pictures all appear exactly the sam except for exposures..  (manual but not RAW) and were downloaded as JPEGS with the sd card).. All my pictures have a file size less than 6.mb. Adobe's sample pictures were all less than 1.mb (700 kb or so )  My computer is right out of the box Windows 7 ..64 bit..4gb Ram... PS preferances, Ram was increased to allow 96% for PS usage but did not resolve the issue..
    Is there a file size limit that I havent read any where? Any one else experience, or know about this issue or have any ideas ?   And yes I am new to this so don't beat me up too hard..Not to mention trying to navigate Windows 7 ..instead of XP
    Thanks
    Message title was corrected by: PECourtejoie

    Are you running Merge to HDR from Bridge or Photoshop?  If Bridge, then either make sure Photoshop is closed before starting, or open the 64bit Photoshop and then run Merge to HDR from Bridge.   I am assuming that you are running from Bridge because it is so much easier recognising the bracketed set in Bridge.    I would increase the memory setting in 64bit Photoshop to something like 80% if only to prove a point - you'll know you have plenty of resources available to work the HDR that way.
    To change the settings go Edit > Preferences > Performance.
    What camera are you using, and how many images in the bracketed set?  I use a 1DsMK3, and 1DMK4 both usually with five frames, and my old Q9550 system with 8Gb easily coped with five x 21Mb files.
    All cameras that have a AEB (Auto exposure Bracketing) feature change the shutter speed, and never the aperture.  A note here:  I am able to change the AEB order to run from darkest through to lightest exposure, instead of the default zero offset followed by minus offset, and finally plus offset.  Having the shots in exposure order makes them much easier to find in Bridge.
    Incidentally, much as I love Photoshop. it comes a poor second to HDR Soft's Photomatix with HDR processing.  ACR does a better job of processing the RAW files, and Photoshop is probably better at aligning the images, but Photomatix is better at the Tone mapping side of things, and keeps getting better.  I am not sure if I am aloud to post this here, but 4.2 beta2 was released yesterday, and you can use it for free, but it places watermarks on the processed image
    http://www.hdrsoft.com/download/privatebeta2/win42.html  (Windows)
    http://www.hdrsoft.com/download/privatebeta2/mac42.html  (Mac)
    Mods, just delete the links if you think them inapropriate.

  • HDR merge not working in CIB lesson 5

    Hello,
    I've seen a few posts on this but no answers... in PS CS5 CIB Lesson 5, the HDR merge command isn't working properly with the images provided on the CD. Following the HDR merging directions in the book on page 139 and 140, the images are coming out very dark and saturated. Does anyone have any idea why this would be happening, and how to make it work properly?
    Thanks!

    It's not you.
    We have two relatively new Adobe Macbook Pros with OS X Lion (6 months or so old). We also have Photoshop CS5 on each (within Adobe Creative Suite 5.5).
    I completed the entire Classroom in a Book (CIB) book for Photoshop CS5.
    When I went through Lesson 5, I had absolutely no problem with performing their exercise with the "model" and merging the three .dng files. All of their settings worked perfectly, and I was able to complete the lesson without incident. This was maybe two or three months ago.
    Today my wife was going through the same lesson, and no matter how many times she tried to follow the lesson book...reading word for word...she got the same result as you, which had the model in merge to HDR "coming out very dark and saturated".
    So, we went to my Macbook Pro, where it had worked perfectly in the past when I completed the lesson months ago. However, this time and in every attempt I made, the HDR image was "coming out very dark and saturated" as well. 
    What worked perfectly a couple of months ago, now it is not working.
    So, today it does not work, and we get the same result as you, on either of our Macbook Pros and that is two people following the exact same lesson.
    CONCLUSIONS:
    It is not you (or us).
    Might Photoshop have a bug? I believe I did an update between when it worked months ago and today change something? Why did it work 2-3 months ago? Might a default setting have been changed in Preferences during an update that causes the CIB Lesson 5 model Merge to HDR exercise not work? The merging these three images at three different exposures was not rendering an image anything close to any of the individual exposures. All attempts resulted in "dark and saturated"... and no adjustment of any kind improved the image to look anything like it should have.
    Is it the DNG files used in the CIB Photoshop CS5 book CD? The CIB Classroom in Book Lesson 5 for Photoshop CS5 uses these specific ".dng files". I have not tried using other raw files, or even .jpgs in this Photoshop HDR feature. That would be a good test. I have used Photomatix in the past, and like those above, that is what I will use if I get more involved in HDR, but would be nice to have the Photoshop HDR feature to be one I would hopefully be able to use in the future.
    If I try the Merge to HDR in Photoshop feature again using another file format, other than .dng files I will post the result.
    With this said, we both have loved the CIB Photoshop CS5 book. I may have had a couple other minor issues on where to find something or had to reboot (ie. "text on a path" or 3D) to get the lesson to work.  The book lessons and video lessons were still worth every penny.

  • HDR Merge Save/Cancel controls not visible

    I am using CS5 on a Mac Pro and today when creating a HDR Merge from Camera Raw the controls (Ok or Cancel) at the bottom of the screen of the HDR merge preview  screen are no longer visible.  The picture controls to the right of the merge are all working
    I have tried restarting the computer and PS several times to no avail. 
    The HDR merge was working fine until my 4th merge and then the controls diasppeared.  It is as if the screen is to large for the display and cannot be resized or moved. I am using Lion.
    Any suggestions?

    What is the current resolution setting for your screen? Is your OS X dock visible?
    If you hide your OS X dock, then reset your preferences and launch Photoshop and run Merge to HDR, are the controls visible?

  • Lightroom CC 2015 HDR merge not importing into Catalog

    When I use the new HDR merge in LR CC 2015, the new xxxxx-HDR.dng image is created but not imported into the catalog. All of the demo videos I've watched show the image being immediately imported into the catalog and visible on the filmstrip. Suggestions? TIA for your help.

    Here is a +/- 3 EV HDR that both LR6/ACR9 and PS-HDR Pro do a reasonable job with, where the only adjustments are clicking Auto in LR:
    Here are the three images, EV+0, EV-3, EV+3, where to get a reasonable view out the windows, the interior was nearly black and to get a reasonable view of the interior, the windows are nearly white.
    Here is a side-by-side of the EV+0 shot with various adjustments applied vs the LR6/ACR9 HDR result with Auto clicked.  Tonally they look similar.  What is better with the LR6/ACR9 version is the view out the windows has more detail and less clipped, and the noise in the darker areas is much better, meaning LR6/ACR9 used more of the brighter image for the floor and more of the darkest image for the view out the windows, which is exactly what HDR is supposed to do:

  • Ps CS6: HDR Merge: Result different

    Hi
    I tried the HDR Merge Pro automatism. Used the ScottS template and reduced the detail and hit OK and what I got to see then was completely different fom the preview before.
    My Photoshop is up-to-date and I tried another template and the result was different from the preview again.
    OS: Win7 64bit HP
    VGA: Radeon HD 4770
    Software: Photoshop CS6 extended 64bit (from Production Premium)
    Photo camera: Canon IXUS HS 125 - 8 megapixel photos
    Screenshots:

    It was the color management. Normally Ps gives me a warning if the profile of the picture is different to my workspace profile but it has never done so with the pics from the Canon camera. It still doesn't and the checkmarks are all set.
    I set the RGB from Off to Keep profile and now it looks like in the preview.

  • I want to know if I can batch HDR process in Lightroom CC as I do currently with LR/Enfuse.

    Hi all, I have recently downloaded the trial version of Lightroom cc and am very impressed by the HDR capabilities. Currently I am using LR/Enfuse which allows me to stack multiple images in groups of five and then set LR/Enfuse to process all these stacked sets and output full-size JPGs ready for finishing. I would much prefer to use Lightroom since it produces DNG files but, as someone who does real estate shoots, I really think it's vital that I can set Lightroom to do the HDR work on all these sets of stacked images and come back half an hour later to find them all output is DNG's. Is such a thing possible? It really makes the difference between signing up for CC instead of sticking to Lightroom five.
    Thanks for any help.
    Phil

    No, there is no batch HDR like in Enfuse although it would be a great option.  As a side note, the LR HDR has been working good for me but I think LR/Enfuse does a better job for what I need.  It also does focus stacking for me for my Landscape photos and works well for that.  Seems like Lightroom could do this too using the same HDR tool with some extra coding to look for contrast instead of luminescence as Enfuse does.  All the new tools (Face Detection, HDR and Pano) are now only "sort of useable"  but they will probably improve as Lr6 seems it is REALLY a beta release and hopefully they will use the feedback given to make changes and  do some MAJOR bug fixing in the next couple release unlike the past.

  • I just update to 5.7.1 now it say I can install Facial Recognition, HDR Merge, Panorama Merge, where is it?

    I do not have CC I have the full version of Adobe Lightroom, I just upgrade from 5.7 to 5.7.1 now when I check for update is say I can install Facial Recognition, HDR Merge, Panorama Merge.  I had a hard enough time finding where the update was.  Now I have now idea where to find the install for these.  

    search and ye shall find...
    I have an upgrade question. I received a notification when I connected my computer to the internet that Lightroom 5.7.1 was available

  • Calling a batch file in sql scripts

    Hi friends,
    I am looking for a way to call any batch file in sql scripts.I am avoiding to use DBMS_SCHEDULER package because my application server and database server are diifferent .
    I am using the sql script in application server.plz help.

    <ironic>
    Ah, I see. This of course explains everything.
    </ironic>
    Now to be serious: there is no way to run a batch script from SQL. The tools which submit SQL Statements to the database are often capable of doing so; host in SQL*Plus can issue OS commands, the host builtin in Forms does it too, and with dbms_scheduler you can run a shell script on the database server.
    So depending on the tools you are using there are several ways to run OS commands. So far you didn't tell us what you want to do with what tools in which version you want to do it. So to only answer is: this is not possible. You cannot run a batch script from plain SQL.
    cheers

  • LR2 and PS4 - merging to HDR, merge to Panaorama and Edit in Layers not working

    Hi,
    I've recently upgraded from LR to LR2.1 and Photoshop CS to CS4. I've been trying to multi-select images from LR2 and edit them as HDR and Panoramas using the "Edit in->" merging options.
    None of them seem to work. I can see PS CS4 being opened, but then nothing happens. No image is opened or dialog box shown anywhere. Closing PS doesn't prompt for any saving, etc.
    I think the problem is because my RAW/DNG files are stored on a NAS. Trying to do the merge from PS directly using the files also doesn't work. But if I copy the files to my local HDD, then things work a lot better.
    Is this a known issue with CS4?
    iMac, OSX Leopard, 4Gb RAM.

    I have done some more tests:
    Setting up CS3 as "Additional External Editor" in LR2.1 Edit/Preferences/External Editing works fine with RAW ( .NEF ) files on NAS-drive.
    Also CS4 as "Additional External Editor" works the same way. The procedure is the same as when CS3 was the standard editor, ie exporting a TIFF file from LR2.1.
    The difference is that the standard CS4 integration is not writing TIFF files från LR, but has a more tight integration to CS4, which is much faster. But still not working when RAW files are on NAS. ( LR catalog files are on local disk ).
    Configuration:
    Dell dimension 9200
    Windows Vista Home Premium ( 32-bit )
    D-link DNS-323 NTFS file system
    Lightroom 2.1
    Photoshop CS4 Extended
    Latest updates installed.

Maybe you are looking for