¿Cómo hago para optimizar los archivos de imagen por lotes con un script?

4

Estoy usando OptiPNG para una gran cantidad de PNG que necesito optimizar. Puedo hacer que se ejecute con un script por lotes donde la aplicación y la imagen están juntas en una carpeta.

start.bat contiene:

start _OPNG.exe *.png -zc9 -zm9 -zs3 -f0-5 -nc -strip "all"

Sin embargo, digamos que tengo una carpeta d:\imagescon 1.pngthrough 10.png, luego tengo una subcarpeta d:\images\sub1con 1sub.pngthrough 10sub.png.

La aplicación se encuentra en, digamos, f:\OptiPNG\optipng.exe.

Quiero un archivo por lotes donde tengo que editar manualmente solo la ubicación de la carpeta de imágenes que quiero optimizar. El archivo por lotes debe tener en cuenta todos los PNG en esa carpeta y sus subcarpetas.

¿Alguien capaz de ayudarme?

Oso gruñón
fuente
Nunca he usado OptiPNG antes. ¿Es mejor que Pngcrush?
Karan
Ninguna pista. No conozco Pngcrush.
Oso gruñón el
Revisé PNGCrush, ¡de hecho es mejor! ¡Gracias!
Oso gruñón el
¡De nada! Como resultado, OptiPNG es una bifurcación de PNGCrush.
Karan

Respuestas:

1

Intenta lo siguiente:

@echo off
echo.
set apppath="F:\OptiPNG\OptiPNG.exe"
if [%1]==[] echo Usage: %0 "PNG Dir" && echo. && echo Error: Invalid parameters && goto :EOF
if not exist %1 echo Usage: %0 "PNG Dir" && echo. && echo Error: Invalid directory "%~1" && goto :EOF
%apppath% "%~1\*.png" -zc9 -zm9 -zs3 -f0-5 -nc -strip "all"
for /d /r "%~1" %%a in (*.*) do %apppath% "%%~a\*.png" -zc9 -zm9 -zs3 -f0-5 -nc -strip "all"
Karan
fuente
En caso de que no esté claro, guárdelo como algo como Optimise.bat , luego llame Optimise "D:\Images"para optimizar todos los PNG en el directorio especificado y todos sus subdirectorios.
Karan
¡¡¡Muy agradecido!!!
Oso gruñón el
Si pudiera molestarte de nuevo, Karan. ¿Podría hacer otro archivo por lotes, pero esta vez con Pngcrush como aplicación? ¡No se preocupe demasiado por los comandos -xyz, estos los buscaré yo mismo en Pngcrus y los agregaré en consecuencia al archivo por lotes! ¡Gracias!
Oso gruñón el
No estoy en mi PC en este momento, así que no puedo confirmarlo, pero IIRC pngcrush debería aceptar comodines como * .png tal como lo hace optipng. En ese caso, todo lo que necesita hacer es modificar la ruta de la aplicación para que apunte a pngcrush.exe y, por supuesto, asegurarse de que está utilizando los parámetros apropiados para el programa.
Karan
Lo intenté, no funciona. PNGCrush tiene diferentes comandos que aparentemente soy demasiado tonto para incorporar. Puedo leer la sección "uso" al ejecutar pngcrush.exe pero eso es ... realmente ... descriptivo ...
Grumpy ol 'Bear