![]() |
VI.iv Comparing the Saving Qualities of JPGs |
Creating a huge jpg with all the saving qualities of one image. | |
_savingQualities.js |
What this script will do is open a new doc, save it thirteen times with the
thirteen possible JPG saving quality steps (from 0 to 12), create a new document,
put all the images in it, and voila ! (optionnally you can add filesize, place
a caption telling which pic is what quality etc...)
|
[Click for a larger
view. Warning: big image]
![]()
Note
The picture you see with the thumbnail was saved using quality '8' (otherwise it was a 4 megabytes files), hence the inutility of the script for that precise example.
displayDialogs = DialogModes.NO;
var defaultRulerUnits = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
if ((documents.length > 0) && (activeDocument.saved)){
var AD = activeDocument;
var initialFolder = activeDocument.path;
AD.flatten();
var docWidth = AD.width; //CS USERS change to AD.width.value here (do it too for height)
var docHeight = AD.height;
var docRes = AD.resolution;
// Save options: you can change STANDARDBASELINE to OPTIMIZEDBASELINE
// or PROGRESSIVE (in which case you must add jpgSaveOptions.SCANS = (equal 3, 4 or 5)
var jpgOptns = new JPEGSaveOptions();
jpgOptns.formatOptions = FormatOptions.STANDARDBASELINE;
jpgOptns.embedColorProfile = true;
jpgOptns.matte = MatteType.NONE;
jpgOptns = new JPEGSaveOptions;
for(a=0;a<=12;a++){
jpgSaveFile = new File(initialFolder+"/scriptTemp"+ a+".jpg");
jpgOptns.quality = a;
AD.saveAs (jpgSaveFile ,jpgOptns , true, Extension.LOWERCASE);
}
for(a=0;a<=12;a++){
var fileRef = new File(initialFolder + "/scriptTemp"+a+".jpg");
open (fileRef);
var openedFile = activeDocument;
openedFile.selectAll;
openedFile.layers[0].copy();
activeDocument = AD
AD.paste()
openedFile.close(SaveOptions.DONOTSAVECHANGES);
AD.layers[0].name = "approx. "+Math.round(fileRef.length/100)/10 +" kb"
fileRef.remove();
fileRef = null;
}
AD.layers[AD.layers.length-1].remove();
if(docWidth>docHeight){
var multipW=1;
var multipH=13;
}else{
var multipW=13;
var multipH=1;
}
AD.resizeCanvas((docWidth+1)*multipW,(docHeight+1)*multipH,AnchorPosition.TOPLEFT)
for(a=13;a>=1;a--){
if(multipW==1){
AD.layers[a-1].translate(0,(13-a)*(docHeight+1))
}else{
AD.layers[a-1].translate((13-a)*(docWidth+1),0)
}
}
}else{
alert("Either you have no document open or you haven't saved your work anywhere prior to the script \nSave your document first !");
}
preferences.rulerUnits = defaultRulerUnits;
![]()
Note/Warning
Notice here that you can delete files from your computer with 'fileRef.remove();' so be careful when handling such functions, you could erase some files that were necessary/important to you.
Next, why Scripting isn't the dream tool either: Scripting Limitations (and changes with CS)
![]() |
page 9 / 11 |
![]() |