Skip to content

Instantly share code, notes, and snippets.

@aalexeev239
Created December 5, 2015 20:01
Show Gist options
  • Save aalexeev239/afbbc6721747ebca3bd9 to your computer and use it in GitHub Desktop.
Save aalexeev239/afbbc6721747ebca3bd9 to your computer and use it in GitHub Desktop.
aa-zoomify
// copied from https://gist.github.com/davidmerrique/4066808
var inFolder = Folder.selectDialog("Please select folder to process");
var defaults = {
type: "w",
quality: 50,
sizes: [1680, 1000, 640]
};
var settings = defaults;
var matches = {
"w": "width",
"h": "height"
};
if(inFolder !== null) {
var fileList = inFolder.getFiles(/\.(jpg|tif|psd|)$/i);
var outfolderName = prompt('Folder name', 'zoom');
var outfolder = new Folder(decodeURI(inFolder) + "/" + outfolderName);
if (!outfolder.exists) outfolder.create();
for(var a = 0; a < fileList.length; a++) {
if(fileList[a] instanceof File) {
var doc = open(fileList[a]);
var docname = fileList[a].name.replace(/\.[^\.]+$/, '');
setValues();
zoomify();
doc.close(SaveOptions.DONOTSAVECHANGES);
}
}
}
function setValues() {
var str = stringifyValues(settings);
var confirmDefaults = prompt(str + '\n======================\nType anything to agree', '');
if (confirmDefaults) {
return;
} else {
var type = prompt('What the type? width(w) or height(h)?',matches[settings.type]);
if (type && (type.match(/^h$/i) || type.match(/height/i))) {
settings.type = "h";
} else {
settings.type = "w";
}
var quality = parseInt(prompt('Set quality',settings.quality),10);
if (!isNaN(quality) && quality > 0) {
settings.quality = quality;
}
var sizesString = prompt('Selected type – '+ matches[settings.type] + '\n Type sizes, divided by space', settings.sizes.join(' '));
if (sizesString) {
settings.sizes = [];
var sizesArray = sizesString.split(" ");
for (var i = 0; i < sizesArray.length; i++) {
var item = parseInt(sizesArray[i], 10);
if (!isNaN(item) && item > 0) {
settings.sizes.push(item);
}
};
}
setValues();
}
}
function stringifyValues(settings) {
var output = 'Your settings are \n======================\n';
switch (settings.type) {
case 'w':
output += 'Type of resizing: \nWidth \n';
break;
case 'h':
output += 'Type of resizing: \nHeight \n';
break;
default:
output += 'Error! No type of resizing set \n';
}
output += 'Selected quality: \n';
output += settings.quality + '\n';
output += 'Selected sizes: \n';
output += settings.sizes.join(', ');
return output;
}
function zoomify() {
var savedRuler = app.preferences.rulerUnits;
var w = app.activeDocument.width;
var h = app.activeDocument.height;
var quality = 50;
// app.preferences.rulerUnits = Units.PIXELS;
// if(w > h) app.activeDocument.resizeCanvas (w, w, AnchorPosition.MIDDLECENTER);
// if(w < h) app.activeDocument.resizeCanvas (h, h, AnchorPosition.MIDDLECENTER);
// app.activeDocument.resizeImage('2560px', undefined, undefined, ResampleMethod.BICUBICSHARPER);
// app.preferences.rulerUnits = savedRuler;
// for(var i = 4; i >= 0; i--) {
// var outfolder = new Folder(decodeURI(inFolder) + "/" + outfolderName + "/" + docname + "/TileGroup0");
// if (outfolder.exists === false) outfolder.create();
// var saveFile = new File(decodeURI(outfolder) + "/" + i + "-0-0.jpg");
// SaveJPEG(saveFile, quality);
// app.activeDocument.resizeImage('50%','50%', undefined, ResampleMethod.BICUBICSHARPER);
// quality = quality + 10;
// }
app.preferences.rulerUnits = Units.PIXELS;
for(var i = settings.sizes.length - 1; i >= 0; i--) {
// var outfolder = new Folder(decodeURI(inFolder) + "/" + outfolderName + "/" + docname + "/TileGroup0");
var outfolder = new Folder(decodeURI(inFolder) + "/" + outfolderName + "/");
if (outfolder.exists === false) outfolder.create();
var compW = 0;
var compH = 0;
if (settings.type === "w") {
compW = settings.sizes[i];
compH = Math.floor(h * compW / w );
} else {
compH = settings.sizes[i];
compW = Math.floor(w * compH / h );
}
app.activeDocument.resizeImage(compW,compH, undefined, ResampleMethod.BICUBICSHARPER);
var saveFile = new File(decodeURI(outfolder) + "/" +
docname + "_" +
settings.type + "_" +
settings.sizes[i] + "_" +
settings.quality + '.jpg');
SaveJPEG(saveFile, quality);
}
app.preferences.rulerUnits = savedRuler;
}
function SaveJPEG(saveFile, quality) {
var exportOptionsSaveForWeb = new ExportOptionsSaveForWeb();
exportOptionsSaveForWeb.format = SaveDocumentType.JPEG;
exportOptionsSaveForWeb.includeProfile = false;
exportOptionsSaveForWeb.interlaced = true;
exportOptionsSaveForWeb.optimized = true;
exportOptionsSaveForWeb.quality = quality;
activeDocument.exportDocument(saveFile, ExportType.SAVEFORWEB,exportOptionsSaveForWeb);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment