Recortar márgenes de imágenes

Muchos de los PDFs tienen el problema de que están pensados para ser impresos o han sido escaneados de un documento impreso por lo que tienen márgenes en blanco alrededor de lo que es la página de texto en sí.

Cuando nuestro ebook renderiza cada página del PDF (o las imágenes que hemos extraído de él), también "dibuja" los bordes por lo que perdemos varios centímetros útiles de pantalla en un área "en blanco" alrededor del contenido. Además, como dejamos menos espacio en pantalla para el contenido en sí, es posible que apenas podamos leerlo.

Lo ideal es recortar las diferentes imágenes quitando la mayor cantidad posible de espacio inútil por los márgenes superiores e inferiores.

Para eso utilizaremos convert (de imagemagick) con la opción "-shave MARGENXxMARGENY", de forma que se eliminan MARGENX píxeles de la parte izquierda y derecha de la imagen, y MARGENY píxeles de la parte superior e inferior.


Determinar el margen de recorte manualmente

El valor de MARGENX y MARGENY lo podemos determinar manualmente ya que estos dependerán del libro/comic que estemos tratando. Para eso abrimos alguno de los JPGs con un editor de imágenes y calculamos cuántos píxeles podemos eliminar de los márgenes izquierdo/derecho o superior/inferior. Ten en cuenta que vamos a aplicar el mismo "recorte" a todas las imágenes, por lo que hay que elegir el valor mayor que no afecte al contenido de ninguna página. Sería más óptimo recortar imagen a imagen aplicando un valor para cada página, pero requeriría mucha intervención manual.

Antes de ejecutar el comando, dado que vamos a sobreescribir las diferentes imágenes, debemos hacernos una copia de las mismas para poder recuperarlas o repetir el proceso con otros valores de MARGENX y MARGENY si vemos que podemos recortar más píxeles o que los valores elegidos eliminan parte del contenido.

$ cp -pr cm-spectrum copia-cmspectrum-preshave
$ cd cm-spectrum
$ export MARGENX="20"
$ export MARGENY="20"
$ export CALIDAD="100"
$ find . -maxdepth 1 -type f -name "*.jpg" | sort | while read FICH; 
  do
     convert "$FICH" -quality $CALIDAD -shave ${MARGENX}x${MARGENY}+0+0 "$FICH"
  done

Veamos el resultado en una ampliación de la esquina superior izquierda de una página antes y después de la conversión:

Antes de recortar los bordes:


 Antes de recortar los bordes

Después de recortar los bordes… 20 píxeles menos:


 Después de recortar los bordes

Es posible que esta conversión recorte parcialmente la portada (ya que estas no suelen tener márgenes y ocupan toda la página completa), por lo que si no queremos que el anterior comando se aplique a la página de portada o contraportada podemos sacar los ficheros de imagen correspondientes del directorio actual (a un directorio temporal o al Escritorio/$HOME) antes de ejecutar el "shave".


Determinar el margen de recorte automáticamente

Para aquellas imágenes con un fondo del margen blanco (libros, revistas, cómics, etc), he creado un sencillo script en python que carga la imagen en memoria y trata de detectar el tamaño de los bordes para devolver las dimensiones exactas que proporcionar a la función -crop de convert.

El script requiere python 2.x y el módulo de python pygame:

A find_borders.py se le debe llamar con estos parámetros:

  • find_borders.py imagen.jpg umbral_color_blanco umbral_porcentaje margenes_adicionales

Veamos un ejemplo con un escaneo de un libro. Ponemos find_borders.py en el path y ejecutamos:

$ export RECORTE="`find_borders.py in.jpg 10 99 5`"
$ convert in.jpg -crop $RECORTE out.jpg

Veamos el resultado antes y después del find_borders + crop (se ha añadido un marco negro alrededor de la imagen original y final para remarcar la dimensión exácta de las imágenes):


 Antes y despues del find_borders + crop

En la anterior captura podéis confirmar que teniendo el mismo tamaño de imagen, la versión sin márgenes tiene las letras más grandes y es más legible, además de no perder espacio de visualización en nuestro ebook.



<Anterior paso: Convertir PDF en imágenes> - <Siguiente paso: redimensionar y tratar imágenes>


<Volver a la sección de Ebooks>