
Tengo un montón de imágenes en una carpeta:
images/image1.jpg
images/image2.jpg
...
Estas imágenes no están optimizadas para la web.
Me pregunto si existe un comando de Linux para optimizar de forma masiva esas imágenes en un solo paso.
ACTUALIZAR: Necesito hacer dos cosas para cada imagen:
si el ancho de la imagen es superior a 900 px, reduzca el ancho a 900 px (manteniendo las proporciones)
guarde el archivo con una calidad inferior, digamos el 70% del original.
Respuesta1
InstalarImagenMagia:
sudo apt-get install imagemagick
Y use el convert
comando de la siguiente manera:
mkdir new
for file in images/*jpg
do convert -quality 70% -resize '>900x' "$file" new/$(basename "$file")
done
Respuesta2
Si tiene una gran cantidad de archivos y desea hacerlo rápidamente, también puede usar el programa paralelo:
sudo apt install imagemagick parallel
Y luego lo siguiente:
find . \( -name '*.jp*g' -o -name '*.png' \) -a ! -name '*.min.*' -type f -print0 | \
parallel -0 'convert {} -resize '>900x' -quality '70%' \
-set filename:newname "%d/%[basename].min.%[extension]" "%[filename:newname]"'
Repasemos eso:
find
-- buscar archivos.
-- en el directorio actual\( -name '*.jp*g' -o -name '*.png' \)
-- que sean png o jpeg (¡tanto "jpg" como "jpeg" son extensiones comunes!)-a ! -name '*.min.*'
-- y omitir archivos que ya están minimizados-type f
-- y son archivos reales, no enlaces simbólicos ni directorios con nombres extraños-print0
-- imprime estos archivos separados con el byte nulo (para que los espacios no rompan las cosas)
parallel
-- lee el comando anterior y ejecuta este comando en paralelo para cada elemento-0
-- cada elemento está separado con el byte nuloconvert {}
-- llame al programa "convertir" imagemagick con el nombre del archivo sustituido por{}
resize '>900x' -quality '70%'
- cambie el tamaño de la imagen a un máximo de 900 px en el eje x y cambie la calidad jpeg al 70%.HaymuchosOtras opciones posibles aquí.-set filename:newname "%d/%[basename].min.%[extension]"
-- crea una variable con el nuevo nombre de archivo.Consulte los documentos para conocer todos los valores válidos..%d
-- el directorio en el que se encuentra el archivo%[basename]
-- el nombre del archivo sin extensiones%[extension]
-- la extensión original del archivo
"%[filename:newname]"
-- el nombre del archivo de salida que configuramos en el paso anterior