Photoshop script to export groups as folders?
Hello
I work with a .psb file that has about 100 groups with layers in them. I would like to export these groups into folders containing a file .png for each individual layer inside. If I create the folders manually and reorganize the files png inside of them, it would take me several hours. I can't find a script that works. Any ideas? Thank you much in advance.
This script will create a folder for the file name and the groupnames with png files.
#target photoshop; app.bringToFront(); main(); function main(){ if(!documents.length) return; try{ var doc = app.activeDocument; app.displayDialogs = DialogModes.NO; pngSaveOptions = new PNGSaveOptions(); var LSets = getLayerSets(); if(LSets.length < 1) return; try{ var Name = doc.name.replace(/\.[^\.]+$/, ''); var docPath = doc.path; }catch(err){ alert("This document needs to be saved before running this script!"); return; } var OutputPath = Folder(docPath + "/" + Name); if(!OutputPath.exists) OutputPath.create(); for(var f in LSets){ var LayerSetIndexs = getChildIndex(Number(LSets[f][0]),false); var groupFolder = Folder(OutputPath + "/" + LSets[f][1].toString()); if(!groupFolder.exists) groupFolder.create(); for(var x in LayerSetIndexs){ selectLayerByIndex(Number(LayerSetIndexs[x])); var Kind = activeDocument.activeLayer.kind; var Shape = isShapeLayer(); if(Kind ==LayerKind.NORMAL || Kind == LayerKind.SMARTOBJECT || Kind == LayerKind.TEXT || Shape == true){ dupLayers(); var saveFile = File(groupFolder + "/" + activeDocument.activeLayer.name + ".png"); activeDocument.saveAs(saveFile, pngSaveOptions, true, Extension.LOWERCASE); app.activeDocument.close(SaveOptions.DONOTSAVECHANGES); }else{ continue; } } } }catch(e){} }; function isShapeLayer(){ var ref = new ActionReference(); ref.putEnumerated( charIDToTypeID('Lyr '),charIDToTypeID('Ordn'),charIDToTypeID('Trgt') ); desc = executeActionGet(ref); if(!desc.hasKey(stringIDToTypeID('adjustment')) ) return false; if(desc.getBoolean(stringIDToTypeID('hasVectorMask' )) == true) return true; return false; }; function getLayerLayerSectionByIndex( index ) { var ref = new ActionReference(); ref.putIndex(charIDToTypeID('Lyr '), index); return typeIDToStringID(executeActionGet(ref).getEnumerationValue(stringIDToTypeID('layerSection'))); }; function getLayerNameByIndex( index ) { var ref = new ActionReference(); ref.putIndex( charIDToTypeID( 'Lyr ' ), index ); return executeActionGet(ref).getString(charIDToTypeID( 'Nm ' )); }; function skipNestedSets( layerIndex ){ var isEnd = false; layerIndex = app.activeDocument.layers[app.activeDocument.layers.length-1].isBackgroundLayer ? layerIndex-2:layerIndex; while(!isEnd){ layerIndex--; if( getLayerLayerSectionByIndex( layerIndex ) == 'layerSectionStart' ) layerIndex = skipNestedSets( layerIndex ); isEnd = getLayerNameByIndex(layerIndex) == '' ? true:false; } return layerIndex-1; }; function getChildIndex(idx, skipNested ){ var layerSetIndex = idx; var isEndOfSet = false; var layerIndexArray = []; while(!isEndOfSet){ layerSetIndex--; if( getLayerLayerSectionByIndex( layerSetIndex ) == 'layerSectionStart' && skipNested ){ layerSetIndex = skipNestedSets( layerSetIndex ); } if(getLayerLayerSectionByIndex( layerSetIndex ) == undefined) break; isEndOfSet = getLayerNameByIndex(layerSetIndex) == '' ? true:false; if(!isEndOfSet ) layerIndexArray.push( layerSetIndex ); } return layerIndexArray; }; function getLayerSets(){ var ref = new ActionReference(); ref.putProperty( charIDToTypeID( "Prpr" ), charIDToTypeID( 'NmbL' )); ref.putEnumerated( charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') ); var count = executeActionGet(ref).getInteger(charIDToTypeID('NmbL')) +1; var Names=[]; try{ activeDocument.backgroundLayer; var i = 0; }catch(e){ var i = 1; }; for(i;i
Tags: Photoshop
Similar Questions
Open an exported file directly in Photoshop (after the exported file created)
var doc = app.activeDocument; var destFolder = Folder ("~/Documents"); if (destFolder) { var fileName = activeDocument.name; var destFile = new File(destFolder + '/' + fileName); var psdExportOptions = new ExportOptionsPhotoshop(); // Set PSD export options psdExportOptions.saveMultipleArtboards = true; psdExportOptions.artboardRange = "1"; psdExportOptions.antiAliasing = false; psdExportOptions.resolution = 300; psdExportOptions.embedICCProfile = false; psdExportOptions.writeLayers = false; psdExportOptions.imageColorSpace = ImageColorSpace.CMYK; doc.exportFile (destFile, ExportType.PHOTOSHOP, psdExportOptions); }This code, I have exported my current AI document as a PSD with set options. He also names the new file how it's called in artificial intelligence.
How can I call the file created and open it directly in Photoshop? Keep in mind that I would work on several files so that the file names would change every time I ran this Script to export.
I could call a file named specifically and open that, but not what I need this script to do. I just need to open the newly created PSD file. Any help would be greatly apreciated!
Hi Mark,
BridgeTalk or for simple commands like this, Interapp communication (Cross-DOM)
use photoshop.open (fileObject);
before that, you need to construct your newly exported file object
. . . doc.exportFile (destFile, ExportType.PHOTOSHOP, psdExportOptions); } var psfile = new File(destFolder + '/' + fileName.split('.')[0] + '-01.psd'); if (psfile.exists) { //alert('file exists') photoshop.open(psfile); } else alert('file does not exist');face detection? Photoshop script
Hello
I explored the possibility of automatic detection of faces and selection using photoshop script. Anyone tried something similar? Please guide me in the right direction.
I need find and automatically select the face (with head) and move in different layers.
http://facedetection.jaysalvat.com/ This Web site is Jquery. But I wanted to do with the photoshop script.
mahendrak15024337 wrote:
Thanks JJMack!
Let's say if we leave selection of face. But is there any command/method photoshop script that detects if the layer/image has sides on it or not?
Thanks again!
If you leave the detection of face, how do we know if there is a face or not in a layer. Same Adobe Face detection detects all the faces in the pictures. New face in CC 2015.5 detection liquefy had no problem finding all 8 faces in your example. Yet, I saw portrait images, in that it has failed to identify a face. CC 2015.5 has so many issues, I do not use it. Older versions of Photoshop CS6 starting have face detection in color range to help select the skin.
Need a little help. Script to export the single document for different types of files.
Hey guys, I'm new to scripting. have looked everywhere but cannot find an answer to this, I'm sure it's pretty simple
At work we export logos all the time in a few different formats for the clients.
I looked in the script as a way to automate the process.So far, I thought a little script to export my Illustrator formats document... now I need to be able to export this document even outside as a res low and high PNG, low and high res JPEG, EPS, PDF and TIFF etc.
I have scripts to do all these separately but just need to know how to put it all in a single script I can do all at onceHere is an example of my two different scripts to export PNG. I just need to know how string together so I can add all of the formats without breaking it.
function savePNG() {} var destFolder = Folder.selectDialog ("select the folder to export the PNG files to :');") If {(destFolder) If (app.documents.length > 0) {} var Nomdoc = app.activeDocument.name.match(/^.*[^.ai]/i); var destFile = new file (destFolder + ' /' + Nomdoc + "-HR.png"); if(destFile == null) {return ;} var doc = app.activeDocument; var artRect = doc.artboards [0] .artboardRect; var exportOptions = new ImageCaptureOptions; exportOptions.resolution = 300; exportOptions.antiAliasing = true; exportOptions.transparency = true; doc.imageCapture (destFile, artRect, exportOptions); } } } savePNG(); and here is the version low resolution
function savePNG() {} var destFolder = Folder.selectDialog ("select the folder to export the PNG files to :');") If {(destFolder) If (app.documents.length > 0) {} var Nomdoc = app.activeDocument.name.match(/^.*[^.ai]/i); var destFile = new file (destFolder + ' /' + Nomdoc + "-LR.png"); if(destFile == null) {return ;} var doc = app.activeDocument; var artRect = doc.artboards [0] .artboardRect; var exportOptions = new ImageCaptureOptions; exportOptions.resolution = 72; exportOptions.antiAliasing = true; exportOptions.transparency = true; doc.imageCapture (destFile, artRect, exportOptions); } } } savePNG(); Thanks for any advice you can give!
EliOh, you want to perform two functions, one after another at the same time? then just name with different names and perform one function after another, if all files will be saved in the same folder, the argument selectDialog move method on each of your functions to don't do only once.
function savePNG_HR(){ var destFolder = Folder.selectDialog('Select the folder to export the PNG files to:'); if (destFolder) { if(app.documents.length > 0){ var docName = app.activeDocument.name.match(/^.*[^.ai]/i); var destFile = new File(destFolder + '/' + docName + " - HR.png"); if(destFile == null){return;} var doc = app.activeDocument; var artRect = doc.artboards[0].artboardRect; var exportOptions = new ImageCaptureOptions; exportOptions.resolution = 300; exportOptions.antiAliasing = true; exportOptions.transparency = true; doc.imageCapture(destFile, artRect, exportOptions); } } } function savePNG_LR(){ var destFolder = Folder.selectDialog('Select the folder to export the PNG files to:'); if (destFolder) { if(app.documents.length > 0){ var docName = app.activeDocument.name.match(/^.*[^.ai]/i); var destFile = new File(destFolder + '/' + docName + " - LR.png"); if(destFile == null){return;} var doc = app.activeDocument; var artRect = doc.artboards[0].artboardRect; var exportOptions = new ImageCaptureOptions; exportOptions.resolution = 72; exportOptions.antiAliasing = true; exportOptions.transparency = true; doc.imageCapture(destFile, artRect, exportOptions); } } } savePNG_HR(); savePNG_LR();I bought and use 6.1 Lightroom and Photoshop elements 14 on disks. If I go the road CC, the $19.99 per month Photoshop includes Lightroom? It says "AN app." Photoshop and Lightroom are grouped in the $9.99 plan. But there is no mention of Lightroom as a separate application in the list of options for $ 19.99. A little puzzled. Is the extra $10.00 just for the 18 additional GB cloud storage?
The Plan of Photoshop 19.99 includes Lightroom. I believe the plan of 9.99 has a less busy version of Photoshop functionality or some limitation similar to what get it.
environment variable or registry from a photoshop script
Is there a way to get the environment since a jsx photoshop script variable? (windows) or the registry
Am interested in variable ProgramData (usually C:\programData) as they change in the registry.
Thank you
var s = .getenv ("ProgramData") $;
Don't know how to get the registry entries.
X
How the photoshop script can call an applescript script
I realize, maybe it's a bit of a messy way around it, but I need to get the photoshop script to call an applescript script. Basically so that I can have it become a menu item in photoshop.
Is - this show applescript can in the same way photoshop script?
If this isn't the case, I thought I could get either photoshop script to call the applescript or even more messy, I could use Photoshop to run a Terminal command to call the applescript.
All thoughts
Matt
For those who come through it
Save your applescript as an application, and then you can use
App.System ("' open ' / path/to/script_as_an_app.app'" ");
then everything works
Simple (I guess) Photoshop scripts quesiton ;)
Hi guys,.
Just a quick question...
I looked on the forum and on the web but cannot find a working solution for my, I think that simple problem.
I have a Photoshop image using variables and external data source (text file) to generate badges with fields such as first_name, last_name, Department,... thanks to this tutorial http://www.richmediacs.com/user_manuals/RMCS_PS_Training/using%20ps%20Variables/UsingVaria blesInPS_EXTERNAL.html (maybe there is a better way to do the same things just scripted).
This part works well but I would add a different logo only for certain Department so I need to use something like "If Department is accounting then show accounting logo of another if Department is engineering genius show another logo display the default logo.
How can I do?
I forgot to say I have this will be my first Photoshop script...
Thank you for your help...
Vince.
With the graphic data and data sets, you have several choices. You may have several layers of logo and use the data to the control that is visible. I think this would be the best way. You can use the dataset object to replace the content of the logo layer. It works best if the logos are the same size. One of the people could be done with simple modifications to the matrix and data sets. You may post-process the images as suggests if you cannot change the data sets.
Photoshop elements 10 shot group crashes
Photoshop Elements 10 - Shot Group crashes after I selected the option in the menu. I use Windows XP. Is there a workaround, or is there a way to fix this?
I was able to fix this by resetting my preferences PSE10. A BIG THANKS goes to mytaxsite.co.uk
Is there a console or a log output of script event? I tried to make a function that performs an alert correctly, but does not create a new document. I can't find is it possible to see if this syntax is incorrect or the command is just outdated.
In the code below, for example, I see the alert message, but no new document. I don't see anyway to see what the problem with him and I pulled this line directly from the photoshop scripting guide.
createDocument var = function() {}
Alert ("create new doc!");
App.Documents.Add (2.4);
};
IMHO, I don't think so. (I don't have none of that.)
Maybe I understand you only hurts.
The only thing you could do - own messages they close again by itself.
Something like this:
// CreateNewDocAndShowMessage.jsx // http://forums.adobe.com/thread/1237214?tstart=0 // regards pixxxelschubser var Call; createDocument (); function createDocument () { Call = "creating new doc!"; CallFunction (); app.documents.add (40,40); } function CallFunction () { win = new Window ("palette"); win.someMessage= win.add ("statictext", undefined, Call); win.show(); $.sleep(1500); win.close(); }How to add a color sample in a Photoshop script?
Hello
I would like to set a point of color sampler in a Photoshop script?
Could you please help me on this.
Thank you
Rajiv.s
var theSampler = app.activeDocument.colorSamplers.add([10,10]);
Alert (theSampler.color.rgb.red + "_" + theSampler.color.rgb.green + "_" + theSampler.color.rgb.blue);
Edit: And don't forget that a document can have only four ColorSamplers (from CS5 at least).
Adobe photoshop script exports data to CSV
Hey guys,.
Is it possible to export the data to a CSV with a script in photoshop. Right now we are running a script in photoshop which creates images of several products in a variety of color combinations. These images are exported to a local folder. Can another script run after the location name and image of the export file to a csv file? If this is not photoshop what if any program can do this.
Thank you
Jacob
Have a look here graphic in Photoshop data-driven creation
How to create a group using photoshop scripts?
Hey guys,.
I can create a layer easily with the following code.
But how do I create a group that contains more than one layer.
docRef var = app.documents.add ();
myLayer var = docRef.artLayers.add ();
Here is an example...
var doc = app.documents.add(); var newLayerSet = doc.layerSets.add(); var myLayer = doc.artLayers.add(); var myLayer2 = doc.artLayers.add(); //move the layers into the layerset myLayer.move(newLayerSet, ElementPlacement.INSIDE); myLayer2.move(newLayerSet, ElementPlacement.INSIDE);Hi, I would need your help. I want to customize this code it will automatically run when I launch immediately click OK plus. Thank you very much.
#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 = true; mergeToHDR.useACRToning = false; var numberOfBrackets = 3; var userCanceled = false; var sourceFolder = new Folder('/d/Automata/LOADING');; var outputFolder = new Folder('/d/Automata/LOADING');; var saveType = "JPEG"; var jpegQuality = 80; var progress; var statusText; var progressWindow; var fileMask = "*"; var outputFilename = "hdr_output_"; var zeroPadding = 2; 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 = kMergeToHDRDeghostBest;//kMergeToHDRDeghostOff 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); files.sort(); var currentFileList = new Array(); var numberOfFiles = files.length; if (numberOfFiles % 3 == 0) { numberOfBrackets = 3; } else { numberOfBrackets = 2; } /* convert numberOfFiles to a string to make sure zeropaddingis high enough to cover all files */ var numberOfFilesStr = "" + (numberOfFiles / numberOfBrackets); if (zeroPadding > 0 && zeroPadding < numberOfFilesStr.length) { zeroPadding = numberOfFilesStr.length; } for(var index = 0; index < numberOfFiles; index++) { if((index % numberOfBrackets) == numberOfBrackets - 1) { var start = new Date(); progress.value = 100 * index / numberOfFiles; currentFileList.push(files[index]); if(userCanceled) break; if(numberOfBrackets > 1) { statusText.text = "Merging files "+(index-numberOfBrackets+2)+" - "+(index+1)+" of "+numberOfFiles + 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 ); statusText.text = "Toning files "+(index-numberOfBrackets+2)+" - "+(index+1)+" of "+numberOfFiles+ estTimeRemaining; } else { statusText.text = "Loading file "+(index+1)+" of "+numberOfFiles+ estTimeRemaining; //otherwise just open the file doOpenFile(files[index]); statusText.text = "Toning file "+(index+1)+" of "+numberOfFiles+ estTimeRemaining; } progress.value = 100 * (index + numberOfBrackets / 2 ) / numberOfFiles; if(userCanceled) break; try { if(app.activeDocument != null && outputBitDepth < 32) { //apply the actual tone mapping to the HDR image to get it back down to 8 bits doHDRToning(); } } catch(error) { alert(error + "\nCheck number of files in source folder"); break; } //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 "+numberOfFiles+ estTimeRemaining; } else { statusText.text = "Saving result "+(index+1)+" of "+numberOfFiles+ estTimeRemaining; } if(userCanceled) break; doSaveFile(outputFolder.absoluteURI + "/" + outputFilename + ZeroPad(Math.round((index + 1)/numberOfBrackets), zeroPadding) ); 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 * ((numberOfFiles - 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() { //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:'Meilleure Visite Chargement', \ 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: 'Meilleure Visite', alignChildren:'top', \ leftGroup: Group { orientation: 'column', alignChildren:'fill', \ inputPanel: Panel { text: 'Input', \ sourceGroup: Group { \ }, \ 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' }\ deghostLabel: StaticText { text: 'Deghost: ' }\ deghostDropDown: DropDownList { }, \ } \ }, \ toningPanel: Panel { text: 'Toning', orientation:'row', alignChildren:'top' } ,\ outputPanel: Panel { text: 'Output', \ outputGroup: Group { \ outputBox: EditText { characters: 10, text: '', enabled:false }, \ }, \ outputOptionsGroup: Group { \ outputFilenameLabel: StaticText { text: 'Filename Format: ' }, \ outputFilenameText: EditText { characters: 10 }, \ }, \ 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: true } \ 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 outputFilenameText = setupWindow.leftGroup.outputPanel.outputOptionsGroup.outputFilenameText; var outputFilenamePost = setupWindow.leftGroup.outputPanel.outputOptionsGroup.outputFilenamePost; 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 deghostDropDown = setupWindow.leftGroup.inputPanel.bracketGroup.deghostDropDown; //set default values bracketBox.text = numberOfBrackets; filterText.text = fileMask; //mergeToHDR.useAlignment = true; alignCheckBox.value = mergeToHDR.useAlignment; outputFilenameText.text = outputFilename; jpegQualityText.text = jpegQuality; saveDropDown.add("item", "TIFF"); saveDropDown.add("item", "JPEG"); saveDropDown.add("item", "TIFF LZW"); saveDropDown.add("item", "TIFF ZIP"); saveDropDown.selection = 0; outputBitDepthDropDown.add("item", "8"); outputBitDepthDropDown.add("item", "16"); outputBitDepthDropDown.add("item", "32"); outputBitDepthDropDown.selection = 0; var generateDeghostDropDownList = function(count) { deghostDropDown.removeAll() deghostDropDown.add("item", "Best"); deghostDropDown.add("item", "Off"); for(var i = 0; i < count; i++) { deghostDropDown.add("item", i); } deghostDropDown.selection = 0; } generateDeghostDropDownList(numberOfBrackets); //event handlers bracketBox.onChange = function() { numberOfBrackets = bracketBox.text; generateDeghostDropDownList(numberOfBrackets); }; filterText.onChange = function() { fileMask = filterText.text; }; alignCheckBox.onClick = function() { mergeToHDR.useAlignment = alignCheckBox.value; }; deghostDropDown.onChange = function() { if(this.selection.text == "Best") hdrDeghosting = kMergeToHDRDeghostBest; else if(this.selection.text == "Off") hdrDeghosting = kMergeToHDRDeghostOff; else hdrDeghosting = Number(this.selection.text); }; outputBox.onChange = function() { outputFolder = new Folder(outputBox.text); 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" && saveDropDown.selection.text != "Radiance" && saveDropDown.selection.text != "OpenEXR"; outputBitDepthLabel.enabled = outputBitDepthDropDown.enabled; }; 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); //default values smoothEdgesBox.value = hdrSmooth; 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; }; 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(stringIDToTypeID('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();I do not support exhibitions in order to perform processing HDR. I don't want to create HDR images. The EXIF data does not have an EV adjustment. You can calculate EV information EXIF information. Should the process of HDR data EXIF to calculate EV your image file need to have then the metadata. Your script can be able to be something for the HDR script, I have no idea what the deghostFlag is all. Maybe if you examine the code in the script of David Milligan you can very well how to use the HDR script from another script.
"Export as an extension could not be loaded because it was not properly signed.
I get this popup error when you select file > export > export under... and also when right click on a layer to ' export as. I tried with layers, work plans, groups, images, nothing works. The "quick export" and "save for web (legacy)" still works well, but since I'm assuming that it will be removed I would really like to get this working...
Don't know if this has anything to do with it, but I enabled "generator" in Preferences > plugins and also "generate image assets' seems to work very well.
I tried to google and search on the Adobe forum, but I was not able to find a solution to this problem. I'm fine with technical details...
I am running the latest version of Photoshop CC 2015 (2015.0.1 version) on:
MacBook Pro (retina, 15 inch, mid-2015)
OS X Yosemite, 10.10.5
Looks like that some files used by export as had changed after the installation, initial, so upgrade is not put to update these files.
Please try:
1. Uninstall Photoshop2 check files listed below and if these files are not removed by uninstall, delete or move them to another location
/ Library/Application Support/Adobe/CEP/extensions/com.adobe.webpa.crema
(Installation of Photoshop path) /Adobe Photoshop 2015/Adobe Photoshop 2015.app/Contents/Required/Plug-Ins/Generator/assets.generate CC CC
3. install Photoshop
Maybe you are looking for
-
Problems with mobile synchronization
I use Thunderbird for two e-mail accounts, that the only one I put up on my Android phone. A few problems with this account: 1. I can't access emails sent or deleted before the day I installed Thunderbird. They are simply not there. While on the othe
-
where is the encryption in fire fox 23.0.1' s option.
I do not find protocols and choose between SSL and TLS.
-
NB 100: How - top connection Orange UK mobile broadband (usb icon 225 stick)
I just managed to get my connected nb100, here's how: Step 1 - enter the SIM card - instructions provided with the device Step 2 - upgrade of the network manager #Right click the icon of your management network at the top right and select "about". If
-
I just want to reinstall Firefox 3.6 and move things back as they were before I wish I had known that I would lose my tools Norton and my Yahoo. I would never have installed Firefox 4. Please... I uninstalled Firefox 4 and now all I have is IE, I nev
-
Laptop HP Stream: what type of memory for my computer
Hi, just bought a HP laptop, Stream 11th session of the Committee. 11d015na with intel Celeron processor N2840 (2.16 Ghz), 32 Gb MEM, 2048 MB DDR3 SDRAM, 8.1, 29.5 cm diagonal HD LED display Windows, with WLAN & bluetooth... What type of fact memory