#! /bin/bash
#
for IMAGEN in `ls *.$1`
do
echo $IMAGEN
convert -filter Lanczos -resize 1024x -sharpen 1x0.75 \
-blur 1x0.5 -quality 85 -strip -sampling-factor 2x2 \
-compress JPEG $IMAGEN w_"${IMAGEN%.*}.jpg"
done
¿El convert los pierde o falta algo para que no lo haga?
Más bien le sobra. El parámetro '-strip' hace que le quite todos los metadatos, si se lo quitas debería conservarlos todos.
Por cierto que es un script reutilizado con prisas, pero lo único que me interesa es que me redimensione las fotos a 1024. La calidad precisamente por esa reducción no me preocupa, así que podría dejarlo sólo en el convert -resize 1024x o si hay formas más simples.
Pues si, esa sería una forma bastante simple.
La idea de ese script es que con el rescalado, así sin más, se pierde bastante nitidez. El parametro '-filter' controla que algoritmo se usa para rescalar (lanczos en este caso). En el gimp arreglamos el problema de la pérdida de nitidéz pasando una máscara de desenfoque o algún filtro similar después del desenfoque. Los parámetros -sharpen y -blur de ese script son un intento de hacer algo similar, enfocar tras el rescalado, y los parámetros '-quality', '-sampling-factor' y '-compress' son para controlar la calidad de la compresión jpg en un equilibrio entre generar una imagen pequeña pero sin que la calidad de visualización se resienta mucho.
Es evidente que no hay una receta automática que funcione bien para todas las imágenes, pero esa me pareció bastante mejor que un simple convert -resize
tamaño.