User Tools

Site Tools


informatica:linux:imagemagick

Imagemagick

imagemagick

Es una herramienta potentísima que nos permite, por ejemplo, combinar dos imágenes en una:

1. Instalarlo

aptitude update && aptitude install imagemagick

Componer un .pdf a partir de un texto y dos imágenes

1. Crear el siguiente guión:

nano /tmp/convertir.sh

Con el siguiente contenido:

#!/bin/bash

Salida="salida.pdf"
Img1="cabecera.png"
Img2="texto.gif"
Img3="pie.jpg"

Texto="
Frase muy larga que no va caber en una linea. No hay que preocuparse, imagemagick la cortará.

Frase 2

Frase 3

etc...
"
#Texto_formateado=${Texto// /\ }

# NOTA: no sé por qué 1 unidad = 1.39 píxeles
# Esto es un DINA4 (826x1169px)
Alto="841.01"
Ancho="594.24"

###############

# Creo la imagen a partir de un texto
#convert -background white -fill black -pointsize 20 -size 520x caption:'123456789012345678901234567890123456789012345678901234567890' $Img2
Cadena1="\'"$Texto"\'"
convert -background white -fill black -pointsize 20 -size 520x caption:"$Texto" $Img2

Cadena2=$Ancho"x"$Alto
convert -size $Cadena2 xc:white $Salida

composite -geometry  +10+10 $Img1 $Salida $Salida
composite -geometry +10+160 $Img2 $Salida $Salida
composite -geometry +10+600 $Img3 $Salida $Salida

2. Grabar y salir

3. Darle permisos de ejecución:

chmod +x /tmp/convertir.sh

4. Dejar en /tmp los siguientes archivos:

Ruta completa del archivo Ancho recomendado (píxeles) Alto recomendado (píxeles)
/tmp/cabecera.png 70 560
/tmp/pie.jpg 70 560

5. Ejecutar el guión (no requiere ser root):

./tmp/convertir.sh

¿Qué hace? Compone un .pdf DINA4 con, de arriba abjo:

  • El membrete
  • El contenido del texto
  • El pie

En el ejemplo usamos hasta 4 formatos distintos (.pdf .png .gif y .jpg) para mostrar solo una pequeña parte del potencial de esta herramienta.

Reducir porcentualmente el tamaño

#!/bin/bash

Dir_origen="/tmp/dir_con_fotos"
Dir_destino=$Dir_origen"/peq"
Extension="jpg"
Porcentaje="16%"

mkdir $Dir_destino
for Ruta_archivo in "$Dir_origen"/*.$Extension
do
	Archivo=${Ruta_archivo##*/}
	convert $Ruta_archivo -resize $Porcentaje $Dir_destino"/"$Archivo
done

Juntar 2 .pdf apaisados en 1 DINA4 n-s

#!/bin/bash

Salida="salida.pdf"
Img1="n.pdf"
Img3="s.pdf"

# NOTA: no sé por qué 1 unidad = 1.39 píxeles
# Esto es un DINA4 (826x1169px)
Alto="841.01"
Ancho="594.24"

###############

Cadena2=$Ancho"x"$Alto
convert -size $Cadena2 xc:white $Salida

# Reduzco tamanyo
convert $Img1 -resize 70% "peq_"$Img1
convert $Img3 -resize 70% "peq_"$Img3

composite -geometry  +0+10 "peq_"$Img1 $Salida $Salida
composite -geometry +0+450 "peq_"$Img3 $Salida $Salida

Cambiar tamaño lienzo (canvas)

Corta una imagen desde los pixeles que quieras.

# convert imagen.png -crop 1982x1401+1982+0 crop.png

Otra forma que a veces cambia tamaño imagen (por investigar) Recortar una imagen a 300×300 cortando la parte de abajo:

# convert entrada.png -resize 300x300^ -gravity North -extent 300x300 salida.png

Gravity:

  • Center
  • East
  • North
  • NorthEast
  • Northwest
  • South
  • SouthEast
  • SouthWest
  • West

Para ampliar el lienzo, tenemos una imagen de 1600×1150 y queremos hacerla de 1600×1200 para poder hacer un vídeo. Añadimos por abajo un trozo azul para que se vea

convert jur.jpg -resize 1600x1200 -background Blue -gravity North -extent 1600x1200 jur2.jpg 

Girar imágen

Gira la imagen 40 grados

# convert inicio.png -rotate 40 final.png

Varios

* Mitad superior de la imagen

convert in.pnm -crop 100%x+50%+0+0 out.pnm

* Mitad inferior

convert in.pnm -crop 100%x100%+0+2350 out.pnm
informatica/linux/imagemagick.txt · Last modified: 2021/03/30 20:57 by jose