Predicted file size
Posted: Mon May 07, 2018 8:18 pm
Independent Photoshop® Scripting Community
https://www.ps-scripts.com/
Code: Select all
//Enregistrer sous avec un poids maximum de fichier
//****************************************************
//Tire du script : Préparation des posts pour le forum passion-photos.net par Piekes
//Adaptation du script MarcoFirma © manolowarr 2005
//****************************************************
//****************************************************
//VARIABLES A MODIFIER
// var MyFolder = "C:\\Documents and Settings\\moi\\Mes documents\\Mes images\\Z_TRAITEMENT_ENREGISTRER"
// Mettre votre nom d utilisateur a la place de " moi " qui est le mien
//" Z_TRAITEMENT_ENREGISTRER " est le repertoire que j ai cree la ou je veux retrouver les photos traitees - creez en un !
//****************************************************
// Changer l adresse de sauvetage de l image ( "C:/Documents and Settings/moi/Mes documents/Mes images/" )
//Mettez votre nom d USER a la place du mien ( " moi " )
//Creation d un dossier Z_TRAITEMENT_ENREGISTRER dans le dossier "Mes images"
myFile1 = "~/Mes documents/Mes images/";
Z_TRAITEMENT_ENREGISTRER = new Folder(myFile1 +"/Z_TRAITEMENT_ENREGISTRER");
Z_TRAITEMENT_ENREGISTRER.create();
MyFolder = new File(myFile1 + "/Z_TRAITEMENT_ENREGISTRER");
var poidsMax = 300000 // = inferieur a 300 Ko - changer suivant le besoin
//Le reste
//*******************************************************************************
var strtRulerUnits = preferences.rulerUnits
preferences.rulerUnits = Units.PIXELS
var originalDoc = activeDocument
//*******************************************************************************
var MyFile = noneExtension( originalDoc.name )
// Test du POIDS
//**************************************************************
var qualit = 12
var x = 1
var NamesaveRef = MyFolder + "/" + MyFile + "_P.jpg"
var NewfileRef = new File( NamesaveRef )
SaveForForum(NewfileRef, qualit)
while (NewfileRef.length > poidsMax )
{
qualit = qualit - x
NewfileRef = new File( NewfileRef )
NewfileRef.remove();
SaveForForum(NewfileRef, qualit)
if( NewfileRef.length < poidsMax )
{
NewfileRef = new File( NewfileRef );
SaveForForum(NewfileRef, qualit);
NewfileRef.length = poidsMax;
}
if (qualit<=0){
alert("La taille de l'image est telle qu'elle ne peut être sauvegardée avec un poids de 130 ko.")
break
}
}
var poidsFichier = NewfileRef.length /1000
poidsFichier = Math.round(poidsFichier)
// fermer l original sans enregistrer
activeDocument.close()
// Save JPG
function SaveForForum(filename, qualit)
{
var jpegOptions = new JPEGSaveOptions();
jpegOptions.quality = qualit;
jpegOptions.embedColorProfile = false;
jpegOptions.FormatOptions = FormatOptions.PROGRESSIVE; //PROGRESSIVE; //STANDARDBASELINE; OPTIMIZEDBASELINE;
app.activeDocument.saveAs( File( filename), jpegOptions, false);
}
//*****************************************************************
function noneExtension( fileName )
{
var Point = fileName.charAt(fileName.length-4);
if ( Point == "." )
{
fileName = fileName.substring( 0, fileName.length-4);
}
return fileName;
}
Hitxuku wrote:Bonjour
I use this script:
Code: Select all
#target photoshop
app.bringToFront();
var originalRulerUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PIXELS;
var inFolder = Folder.selectDialog();
var ListFileInFolder = inFolder.getFiles("*.jpg"); // list of files as object
// order of big files
var i = 0; // for files in folder
var k = 0; // for big files for alert
// search smalest file for re-save in the end with maximum quality
var SmallFileLength = ListFileInFolder[i].length;
var SmallFileIndex = 0;
while ( ListFileInFolder[i] != undefined ) {
if ( ListFileInFolder[i].length >= 20900000) { // 20Mb*1024*1024 = 20900000b
var jpegOptions = new JPEGSaveOptions();
jpegOptions.quality = 11;
//second while for step save iteration
while (ListFileInFolder[i].length >= 20900000){
app.open(ListFileInFolder[i]); //open file
app.activeDocument.saveAs( File( ListFileInFolder[i] ), jpegOptions ); // save file
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES); //close file
ListFileInFolder[i] = new File( ListFileInFolder[i]) //update information
jpegOptions.quality--;
}
k++
}
if (ListFileInFolder[i].length < SmallFileLength) {
SmallFileLength = ListFileInFolder[i].length;
SmallFileIndex = i;
}
i++;
};
if (k > 0) {
//if we did something - re-save smolest file with maximum quality
jpegOptions.quality = 12;
app.open(ListFileInFolder[SmallFileIndex]); //open file
app.activeDocument.saveAs( File( ListFileInFolder[SmallFileIndex] ), jpegOptions ); // save file
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
beep();
alert("Proceed " + k + " files")
} else {
alert("All files are less than 20Mb")
}