Ottimizzare le immagini png con pngcrush - versione batch

ATTENZIONE! Il post ha più di 2 anni e le informazioni contenute potrebbero essere obsolete (ad esempio a causa di un aggiornamento di versione rispetto agli elementi descritti o links modificati da siti esterni).

Ottimizzare diverse immagini png con pngcrush può essere un lavoro molto lungo se fatto da linea di comando. Se poi si devono ottimizzare 400.000 tiles preparate con MapTiler diventa impossibile! Per questo ho creato un piccolo file .bat (per windows) per automatizzare l'operazione. Il file va copiato nella stessa directory del file eseguibile pngcrush.exe. Ecco il sorgente:

@ECHO OFF
ECHO.
SET /P directory=Inserire il percorso completo della directory e premere invio (racchiudere tra doppi apici se il percorso contiene spazi):
REM // Controlla che la directory esista
IF NOT EXIST %directory% GOTO NOWINDIR
 
ECHO ..........................
ECHO Directory selezionata: %directory%
 
REM // Richiede conferma
SET /P continua=Procedere con l'ottimizzazione? I files verranno sostituiti. (Y/N)
 
IF /I %continua%==n GOTO ANNULLA
 
REM // Se viene confermato procede all'ottimizzazione dei files
IF /I %continua%==y (
    ECHO ..........................
    ECHO Inizio ottimizzazione....
    FOR /R %directory% %%f IN (*.png) DO ( pngcrush.exe "%%f" "%%f-crushed.png" && move /Y "%%f-crushed.png" "%%f" )
)
 
ECHO ..........................
ECHO ..........................
ECHO Operazione completata
ECHO ..........................
ECHO ..........................
 
PAUSE
EXIT
 
:ANNULLA
ECHO Ottimizzazione annullata
PAUSE
EXIT
 
:NOWINDIR
ECHO La directory %directory% non esiste
PAUSE
EXIT

Le immagini in questo modo vengono sostituite.
Se si desidera mantenere il file originale è possibile eliminare il comando “move” sostituendo questa riga:

FOR /R %directory% %%f IN (*.png) DO ( pngcrush.exe "%%f" "%%f-crushed.png" && move /Y "%%f-crushed.png" "%%f" )

con questa:

FOR /R %directory% %%f IN (*.png) DO ( pngcrush.exe "%%f" "%%f-crushed.png" )

 


Commenti