Agregar texto a una imagen con ImageMagick

Hice un pequeño script en Bash para agregar texto a una imagen con ImageMagick.

agregartexto script en bash | Agregar texto a una imagen con ImageMagick
El script y al mismo tiempo una muestra del resultado.

Bueno en realidad hace un poco más que eso. En el momento en el que se ejecuta, le agrega un texto en la parte inferior derecha de la imagen, si es muy grande la redimensiona y al final la optimiza para que sea de un tamaño adecuado.

Read more

Convertir todas las imágenes de un directorio a PDF

Varias veces he tenido la necesidad de convertir todas las imágenes de un directorio a PDF, al principio no fue fácil, lo primero que se me ocurrió fue pegar todas las imágenes a un documento de Writer en LibreOffice para luego generar el PDF y este método funciona si son solo dos o tres imágenes, pero cuando son varias decenas el proceso se vuelve tedioso y poco práctico.

Luego recordé que muchas operaciones sobre imágenes se pueden automatizar usando el paquete ImageMagick que tiene un buen de tiempo en el mundo de linux, anteriormente lo había utilizado para redimensionar imágenes, pero no estaba seguro sobre si era posible generar un PDF, afortunadamente lo es utilizando el programa convert.

Para poder ejecutar este comando es necesario tener instalado el paquete  que se encuentra disponible en la mayoría de las distribuciones de Linux.

Convertir todas las imágenes de un directorio a PDF con imagemagick
Instalación del paquete imagemagick desde el Centro de software de Ubuntu

El proceso es muy simple realmente, basta con  abrir una terminal y ubicarse en el directorio donde se encuentran las imágenes y teclear algo muy parecido a esto:

convert *.jpg archivo-pdf.pdf

El comando se encargará de convertir, en este caso, todas las imágenes jpg del directorio al formato PDF.

Tip. Si quieren conservar un orden de aparición de las imágenes dentro del documento PDF entonces les recomiendo que nombren las imágenes con números consecutivos como 001.jpg , 002.jpg ,003.jpg … etc, de esa manera el comando convert respeta el orden de aparición.

Convertir todas las imágenes de un directorio a PDF - La instrucción convert
Ejecutando el comando para realizar la conversión a PDF.

convert es una instrucción muy potente, no solo se utiliza para convertir imágenes en distintos formatos, se puede utilizar para muchas cosas más, redimensionar, crear, editar, convertir, etc.

Todo el proceso dura unos cuantos segundos, lo he intentado con carpetas que contienen hasta medio centenar de imágenes a una excelente velocidad. Espero que este consejo les sea de utilidad.

Cuando son muchas imágenes o son muy grandes (o ambas)

Me acaba de pasar un caso curioso, tenía la tarea de convertir 448 imágenes con un tamaño de 1700 x 2200 píxeles y el consejo anterior no funcionó.

Mi computadora se puso a trabajar tan intensamente que perdí el control sobre ella, el puntero del ratón dejó de responder, el disco duro no parpadeaba ¡Se quedó encendido!. Dejé que continuara con el trabajo hasta que lo terminara.  Pero ¡Oh decepción! en lugar de obtener un flamante archivo PDF obtuve un bonito mensaje de error.

convert: unable to extend pixel cache 'No existe el archivo o el directorio' @ fatal/cache.c/CacheSignalHandler/3625.

Intenté varias cosas pero nada funcionó hasta que leí este artículo en los foros de Ubuntu [SOLVED] Cannot convert .jpg to .pdf en el que recomiendan el uso del software GraphicsMagick que por alguna razón ya estaba instalado en mi Manjaro.

Parece que una parte del problema son los archivos temporales, Manjaro tiene una partición temporal (tmpfs) que parece que es insuficiente para la tarea, por eso es necesario especificarle al programa un directorio temporal en el disco duro que tenga el espacio suficiente.

export MAGICK_TMPDIR=/my/big/directory

Para luego generar el archivo PDF con:

gm convert *.jpg -adjoin -compress JPEG archivo.pdf

Después de unos angustiantes 5 minutos en el que la computadora parecía que echaba humo, al fin terminó de generar el archivo PDF sin mayor problema.

Ahora tendré que leer un poco más sobre GraphicsMagick, suena muy interesante. 🙂