Skip to main content
Participating Frequently
June 25, 2011
Released

P: Ability to arrange & customize save-as file formats so popular formats are at the top

  • June 25, 2011
  • 197 replies
  • 6935 views

Photoshop supports about 20 formats, but I only use 4 or 5 of them. It's bugged me since 5.5 to have to fish for jpeg somewhere in the middle of the list. Can the file formats get arranged by most commonly used? And maybe allow us to remove stuff like targa and large file format that nobody uses.

Pinned Reply By Anshul_Saini

Hi All,

We’re happy to share that this feature is now available in the latest Photoshop 27.10 release.

Please update Photoshop to version 27.10 and give it a try.

For details on how to customize the file formats shown in the Save dialog, including how to configure and use the new functionality, please refer to the following: post: https://community.adobe.com/announcements-710/the-wait-is-finally-over-customize-your-save-dialog-file-formats-in-photoshop-1639074 

We’d love to hear how the new workflow works for you. If you run into any issues or have feedback after trying it, please let us know.

For an overview of the other new features, improvements, and bug fixes included in Photoshop 27.10, please see: https://community.adobe.com/announcements-710/photoshop-27-10-new-ai-editing-tools-light-adjustment-layer-and-more-1639062

Thank you to everyone who requested this feature and shared feedback with us.

197 replies

c.pfaffenbichler
Community Expert
Community Expert
December 27, 2014

The below code could be edited in a text editor or (preferably) in Adobe’s ExtendScript Toolkit as long as it is saved as a .jsx-file into Photoshop’s Scripts Folder.
If you should need help improving it you probably should post over at
https://forums.adobe.com/community/ph...

// save jpg or tif;
// 2014, use it at your own risk;
#target photoshop
if (app.documents.length > 0) {
//////////////////////////////////////////
var thedoc = app.activeDocument;
var docName = thedoc.name;
try {
var basename = docName.match(/(.*)\.[^\.]+$/)[1];
var docPath = thedoc.path
}
catch (e) {
var basename = thedoc.name;
var docPath = "~/Desktop"
};
//////////////////////////////////////////
////// create dialog for customer-entry //////
var dlg = new Window('dialog', "save copy", [500,300,820,683]);
dlg.filename = dlg.add('edittext', [12,15,308,35], (basename), {multiline:false});
dlg.filename.active = true;
dlg.path = dlg.add('button', [12,45,308,80], "to select different folder hit enter", {name:'ok'});
dlg.thepath = dlg.add('listbox', [12,90,308,220], String(docPath).split("/"));
dlg.path. function () {
var theFolder = Folder(docPath).selectDlg ("select folder");
if (theFolder != undefined) {
dlg.thepath.removeAll();
var theArray = String(theFolder.fullName).split("/");
for (var m = 0; m < theArray.length; m++) {
dlg.thepath.add("item", theArray[m]);
};
docPath = String(theFolder.fullName)
};
};
//////////////////////////////
dlg.jpg = dlg.add('panel', [12,230,153,330], "save jpg");
dlg.jpg.jpg7 = dlg.jpg.add('button', [10,10,120,40], "jpg copy 7");
dlg.jpg.jpg10 = dlg.jpg.add('button', [10,50,120,80], "jpg copy 10");
dlg.jpg.jpg7. function () {
dlg.close();
saveJpgCopy (thedoc, docPath, dlg.filename.text, false, 7, "", false)
};
dlg.jpg.jpg10. function () {
dlg.close();
saveJpgCopy (thedoc, docPath, dlg.filename.text, false, 10, "", false)
};
//////////////////////////////
dlg.tif = dlg.add('panel', [168,230,308,330], "save tif");
dlg.tif.flat = dlg.tif.add('button', [10,10,120,40], "flat tif copy");
dlg.tif.layered = dlg.tif.add('button', [10,50,120,80], "layered tif");
dlg.tif.flat. function () {
dlg.close();
saveTiff (thedoc, docPath, dlg.filename.text, false, false, false, false, true)
};
dlg.tif.layered. function () {
dlg.close();
saveTiff (thedoc, docPath, dlg.filename.text, true, true, false, false, false)
};
//////////////////////////////
// cancel-button;
dlg.cancelBtn = dlg.add('button', [13,340,307,370], 'Cancel', {name:'cancel'});
//////////////////////////////
dlg.center();
var myReturn = dlg.show ();
};
////////////////////////////////////
/*save jpg copy*/
function saveJpgCopy (thedoc, docPath, basename, srgb, theQuality, theSuffix, overwrite) {
/* check for existing file */
if (overwrite == false && File(docPath+'/'+basename+theSuffix+'.jpg').exists == true) {
var theConfirm = confirm("overwrite existing file");
if (theConfirm == false) {return}
};
/* make copy and save */
if (app.documents.length > 0) {
try {
var jpegOptions = new JPEGSaveOptions();
jpegOptions.quality = theQuality;
jpegOptions.embedColorProfile = true;
/* duplicate */
if (thedoc.mode == DocumentMode.BITMAP) {
var theCopy = thedoc.duplicate ("thecopy", true);
var idCnvM = charIDToTypeID( "CnvM" );
var desc2 = new ActionDescriptor();
var idT = charIDToTypeID( "T " );
var desc3 = new ActionDescriptor();
var idRt = charIDToTypeID( "Rt " );
desc3.putInteger( idRt, 1 );
var idGrys = charIDToTypeID( "Grys" );
desc2.putObject( idT, idGrys, desc3 );
executeAction( idCnvM, desc2, DialogModes.NO );
}
else {
if (thedoc.mode == DocumentMode.LAB || thedoc.mode == DocumentMode.DUOTONE || thedoc.mode == DocumentMode.INDEXEDCOLOR || thedoc.mode == DocumentMode.MULTICHANNEL) {
var theCopy = thedoc.duplicate ("thecopy", true);
var idCnvM = charIDToTypeID( "CnvM" );
var desc114 = new ActionDescriptor();
var idT = charIDToTypeID( "T " );
var idRGBM = charIDToTypeID( "RGBM" );
desc114.putClass( idT, idRGBM );
executeAction( idCnvM, desc114, DialogModes.ALL );
}
else {
var theCopy = thedoc.duplicate("thecopy", true)
}
};
/* convert */
if (srgb == true) {
theCopy.convertProfile ("sRGB IEC61966-2.1", Intent.RELATIVECOLORIMETRIC, true, true)
};
theCopy.saveAs((new File(docPath+'/'+basename+theSuffix+'.jpg')),jpegOptions,true);
theCopy.close(SaveOptions.DONOTSAVECHANGES)
}
catch (e) {docName+" failed"}
}
};
/*save tif */
function saveTiff (thedoc, docPath, basename, srgb, layers, alpha, overwrite, copy) {
/* check for existing file */
if (overwrite == false && File(docPath+'/'+basename+'.tif').exists == true) {
var theConfirm = confirm("overwrite existing file");
if (theConfirm == false) {return}
};
/* make copy and save */
if (app.documents.length > 0) {
try {
/* tif options */
tifOpts = new TiffSaveOptions();
tifOpts.embedColorProfile = true;
tifOpts.imageCompression = TIFFEncoding.TIFFLZW;
tifOpts.alphaChannels = alpha;
tifOpts.byteOrder = ByteOrder.MACOS;
tifOpts.layers = layers;
/* duplicate */
if (copy == true) {var theCopy = thedoc.duplicate("thecopy", true)}
else {var theCopy = thedoc};
theCopy.saveAs((new File(docPath+'/'+basename+'.tif')),tifOpts,false);
if (copy == true) {theCopy.close(SaveOptions.DONOTSAVECHANGES)}
}
catch (e) {docName+" failed"}
}
};

Inspiring
December 23, 2014
+ 1 for this.
CreeDeauxAuthor
Participating Frequently
December 23, 2014
That script sounds like it'd be very useful!
Can it be edited in any text editor or is it somehow compiled already?

If it's editable I think I could probably figure out how to tweak it
to do exactly what I want.

Can you link to the file or text?
I've never implemented a script within photoshop though
I've used them in indesign.
c.pfaffenbichler
Community Expert
Community Expert
December 23, 2014
Personally I still use a Flash Panel to trigger Scripts that automatically save the active file as is or separated (according to a couple of print conditions) psd or tif to a Links-folder it it exists, beside the original if no such folder is present.
But a Script could achieve something similar, in this example hitting enter will raise the folder selection dialog and there are four buttons hitting one of which will close the dialog and save jpg-copies with certain quality settings, respectively a flattened tiff copy without alpha channels or as a layered tiff. (No option for additional settings, though.)
Would that be of use to you?
CreeDeauxAuthor
Participating Frequently
December 15, 2014
I'll give those links a try, cheers. I think the best way to explain what I'd like is my "in a perfect world" scenario.

The usual file --> save as dialogue would only have 3 formats: JPG, 16-bit TIF, and PNG only. I've gotten into photography and still end up with JPG as my final output for for all shots that don't require printing, and 16 bit TIFFs for files that will be printed and have more dynamic range than an 8 bit format can hold. I use PNG for web images that have transparency.

I don't mind dealing with the usual secondary dialogues that come up after I choose a format (like JPG's quality slider, TIF's compression format, etc.)
I usually can just press enter and accept the defaults or last-used setting.

In a less perfect world, there's still a big list of formats, 90% of which I never use, but those 3 popular formats are at the very top of the list.

In an even less perfect world, I'd have 3 separate keyboard shortcuts to save files, one for each of the 3 formats. I'm not sure if that can be recorded as a photoshop action... I don't think it prompts me for a save location, and I'm not sure if it can prompt me to tweak those other dialogues like the JPEG quality slider.
c.pfaffenbichler
Community Expert
Community Expert
December 15, 2014
There are at least two Photoshop Scripting Fora
https://forums.adobe.com/community/ph...
http://ps-scripts.com/bb/
where you could ask for help, at ps-scripts.com there is also a section for professional scripting services:
http://ps-scripts.com/bb/viewforum.ph...

But what exactly is your minimal requirement to constitute an improvement over the current situation?
How many file formats do you regularly use, which settings do you use regularly (like with jpg – do you really use all 12 quality settings or just one or two of them), would a Script for each format suffice, ...?
CreeDeauxAuthor
Participating Frequently
December 15, 2014
I'd be willing to try it but I can't seem to find a script that does this via google. I don't know how to write one myself... Do you know of one? Or where I might ask to commission one?
c.pfaffenbichler
Community Expert
Community Expert
December 15, 2014
A Scripting approach may not offer exactly all of what you are after but I suspect it could (possibly in conjunction with an html5 Panel) offer some improvement.
CreeDeauxAuthor
Participating Frequently
December 15, 2014
I used to run a clunky 3rd party app called "Formats Customizer", except it is constantly flagged by my antivirus program (and my browser also blocks attempts to download the installer). It may actually have adware, I dunno if it's a false positive or not. I got sick of the warnings so I uninstalled it. If there's another solution, I'm not aware of it.
c.pfaffenbichler
Community Expert
Community Expert
December 15, 2014
Over three years ago I posted:
»But in the meantime you could look into a Scripting solution for your personally-most-popular formats.«
So what have you done to streamline your saving process so far?