Una de las operaciones básicas a la que nos enfrentamos cuando manejamos imágenes es la «conversión». Hay muchas aplicaciones que hacen este tipo de operaciones. Sin embargo, siempre he pensado que este tipo de operaciones es mucho más cómodo realizarlo desde el terminal, sobre todo cuando tienes que aplicar el mismo tipo de operación a una decena de imágenes, o quizá a cientos o a miles. Por ejemplo, si quieres añadir un logo a todas las imágenes de tu página, o de un viaje que hicieste, o lo que sea. De la misma manera, se puede decir de operaciones como el renombrado de archivos, etc.
Ciertamente, el terminal es una herramienta básica para el manejo de archivos, y aunque inicalmente, te puede parecer un regreso a la prehistoria, cuando aprendes a manejarlo, descubres todo su potencial y la cantidad de trabajo que ahorra.
En fin, después de esta «apología del terminal», vamos al asunto en cuestión, convertir varias imágenes en una sola línea del terminal.
Para esta aplicación echamos mano de ImageMagick. Para quien no lo conozca, ImageMagick,es un conjunto de herramientas que te permite crear, editar, componer o convertir imágnes. Puede leer y escribir en una gran variedad de formatos (sobre 100) incluyendo DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, and TIFF.
Se puede utilizar ImageMagick para escalar, invertir, reflejar, girar, distorsionar y transformar imágenes, ajustando colores, aplicando efectos especiales, dibujando tensto, líneas, polígonos, elipses y curvas Bézier.
La potencia de ImageMagick se encuentra en la línea de comandos, o se puede utilizar desde las librerías implementadas para tu lenguaje de programación preferido: G2F (Ada), MagickCore (C), MagickWand (C), ChMagick (Ch), ImageMagickObject (COM+), Magick++ (C++), JMagick (Java), L-Magick (Lisp), NMagick (Neko/haXe), MagickNet (.NET), PascalMagick (Pascal), PerlMagick (Perl), MagickWand for PHP (PHP), IMagick (PHP), PythonMagick (Python), RMagick (Ruby), o TclMagick (Tcl/TK).
Vamos, en pocas palabras, es una caja de herramientas para imágenes brutal.
ImageMagick incluye algunas herramientas para utilizarlas directamente desde la línea de comandos, como animate, compare, composite, conjure, convert, display, identify, import, mogrify, montage, stream.
En nuestro caso vamos a utilizar mogrify:
Mogrify permite redimensionar una imagen, recortarla, girarla, invertirla, unirla, vamos, un sinfín de operaciones. Es una herramienta similar a convert con la excepción de que sobreescribe la imagen original, a menos que cambies el formato con la opción -format, que es en particular lo que a nosotros nos interesa hacer.
Nos metemos en harina, si queremos convertir todas las imágenes con extensión «*.png» a jpg la instrucción a emplear, sería:
mogrify -format jpg *.png
Tan sencillo como eso. Una vez terminado el proceso, en la carpeta en cuestión tendremos todos las imágenes con extensión «jpg» y «png».
Una vez completado el objetivo del presente artículo, lo siguiente es indicar algunos otros usos de mogrify, aunque siempre puedes consutar las páginas «man» o mirar en ImageMagick, para sorprendente del increible potencial de esta herramienta.
Por ejemplo, si quieres reducir el tamaño de todas las imágenes «jpg» de una carpeta al 50%, simplemente:
mogrify -resize 50% *.jpg
Ten en cuenta que con la instrucción anterior, te sobreescribe todas las imágenes. Puedes evitarlo, guardando las imágenes con otro formato:
mogrify -format png -resize 50% *.jpg
Ahora la operación será doble, redimensionamiento al 50% y cambia a formato png, pero te deja los archivos originales sin modificar.
El inconveniente de utilizar mogrify, es que no sabes cuanto tiempo llevas cambiando el formato, y sobre todo cuanto tiempo te queda, pero vamos que es una alternativa mas que interesante.
buen día, excelente blog.
puedes agregar el parámetro -monitor a la orden que estés procesando para ver su progreso…
suerte.
muy útil, gracias.