Skip to content

Instantly share code, notes, and snippets.

@rolftimmermans
Created June 25, 2014 14:24
Show Gist options
  • Save rolftimmermans/936eb3abf99776070830 to your computer and use it in GitHub Desktop.
Save rolftimmermans/936eb3abf99776070830 to your computer and use it in GitHub Desktop.
Compressing all PNG images in a folder and its subfolders with TinyPNG
#target photoshop
/* Open the given file, and compress with TinyPNG. */
function compressFile(file) {
var document = open(file);
if (document.mode == DocumentMode.INDEXEDCOLOR) {
document.changeMode(ChangeMode.RGB);
}
var tinypng = new ActionDescriptor();
tinypng.putPath(charIDToTypeID("In "), file); /* Overwrite original! */
var compress = new ActionDescriptor();
compress.putObject(charIDToTypeID("Usng"), charIDToTypeID("tinY"), tinypng);
executeAction(charIDToTypeID("Expr"), compress, DialogModes.NO);
document.close(SaveOptions.DONOTSAVECHANGES);
}
/* Recursively compress files in the given folder, overwriting the originals. */
function compressFolder(folder) {
var children = folder.getFiles();
for (var i = 0; i < children.length; i++) {
var child = children[i];
if (child instanceof Folder) {
compressFolder(child);
} else {
/* Only attempt to compress PNG files. */
if (child.name.slice(-4).toLowerCase() == ".png") {
compressFile(child);
}
}
}
}
try {
compressFolder(Folder.selectDialog("Compress folder with TinyPNG"));
} catch(error) {
alert("Error while processing: " + error);
}
@ogland
Copy link

ogland commented May 21, 2019

This is great but it crashes both photoshop 2018 and 2019 when attempting to compress JPEG. Any chances for a updated script?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment