Respuestas:
Puede usar la herramienta de mogrificación de ImageMagick
mogrify -format jpg * .bmp
sudo apt install imagemagick
en Ubuntu y puede establecer la calidad agregando-quality 100
Es probable que tenga instalado ImageMagick en Ubuntu.
Eso puede hacer ,
convert filename.bmp filename.jpg
actualizar:
El mogrify
(respondido por hyperslug
y referido por cjm
) también es una buena opción.
Use el programa mogrify para cambiar el tamaño de una imagen, desenfocar, recortar, eliminar el brillo, difuminar, dibujar, voltear, unir, volver a muestrear y mucho más.
Esta herramienta es similar a la conversión, excepto que el archivo de imagen original se sobrescribe
(a menos que cambie el sufijo del archivo con la-format
opción) con cualquier cambio que solicite.
Déjame hacer un pequeño cambio en la respuesta salmonmoose:
for i in `ls *.bmp`; do convert $i $i.jpg; done
Lo anterior funciona pero genera archivos llamados "bmp.jpg". Puede obtener archivos .jpg con este comando:
for i in *.bmp; do convert ${i} ${i%bmp}jpg; done
Ver man bash
para detalles del for
comando. La ${i%bmp}
parte significa la cadena "$ {i}" sin la subcadena "bmp" al final.
Hay otras operaciones para transformar la cadena en "$ {i}". "$ i" es una abreviatura de "$ {i}". La ls *.bmp
parte en la respuesta salmonmoose significa "ejecutar ls *.bmp
, luego la i
parte for asigna cada cadena separada por espacios a i
". Lo mismo se logra *.bmp
porque coincide con todos los nombres de archivo en el directorio.
Hay un inconveniente con for
: si los archivos en su directorio tienen espacios en el nombre, por ejemplo "imagen de boda 1.bmp", se asignará 3 veces a la i
var, realizando estos comandos:
convert wedding wedding.jpg
convert picture picture.jpg
convert 1.bmp 1.bmp.jpg
En mi respuesta también falla la coincidencia "$ {i% bmp}".
Pero hay una solución: puede usar el find
comando en su lugar. Ver man find
para más detalles. Debe escribir algo como lo siguiente (verifique la sintaxis con la página de manual antes de intentarlo):
find -name *.bmp -type f -exec convert '{}' '{}'.jpg \;
(No estoy muy seguro de la parte del nombre, y tengo algunas dudas en la -exec
parte, ver man find
primero)
Si desea unir todas las imágenes en un archivo .jpg, puede concatenarlas con otro filtro, como el mencionado en la primera respuesta.
for i in `ls *.bmp`; do convert $i $i.jpg; done
Sí, esto hará un montón de archivos llamados filename.bmp.jpg pero hará el trabajo.
ls
.