⚠️ Este es un sitio de traducción no oficial, sin relación con ImageMagick Studio LLC. Para información autorizada, consulte la página original (https://usage.imagemagick.org/montage/index.html).

Ejemplos de ImageMagick -- Montage, Matrices de Imágenes

Prefacio e índice de los ejemplos de ImageMagick
Montage, introducción y aspectos generales

El uso original de "magick montage" es generar tablas de miniaturas de imágenes, es decir, hacer referencia a miniaturas de grandes colecciones de imágenes, especialmente fotos. Y aunque todavía puede usarse para ese propósito, también puede hacer mucho más. Esta página examina lo que puedes hacer con montage, y cómo puedes usarlo en tus propias imágenes.


Montage, introducción

El comando "[magick montage](https://imagemagick.org/www/montage.html)" está diseñado para producir una matriz de imágenes en miniatura. Algo así como una hoja de pruebas de una gran colección de imágenes. El "[magick montage](https://imagemagick.org/www/montage.html)" por defecto, sin opciones, es muy simple, con cuadrados contenedores bastante grandes, sin marco, etiquetas ni sombras.

  magick montage balloon.gif medical.gif present.gif shading.gif  montage.jpg

[Salida de IM]

Geometría - Tamaño del mosaico y redimensionado de imagen

El ajuste "[-geometry](https://imagemagick.org/command-line-options/#geometry)" es el control más importante de "magick montage". Define el tamaño de las imágenes en miniatura individuales, y el espaciado entre ellas. La parte del tamaño de la geometría se usa como argumento para el Operador de redimensionado, incluidos todos sus indicadores de propósito especial. La parte de posición de la opción se interpreta como la cantidad de espacio de borde que se deja alrededor de la imagen, por lo que hacerla más pequeña hará que los huecos entre las imágenes sean más pequeños. El ajuste "[-geometry](https://imagemagick.org/command-line-options/#geometry)" por defecto es '120x120>+4+3', que significa ajustar cualquier imagen dada en un cuadro de 120x120 píxeles de tamaño. Si la imagen es más grande, redúcela, pero no redimensiones las imágenes más pequeñas (según el Indicador Solo Reducir las Más Grandes ('>'). El tamaño del 'mosaico' se establece entonces según las mayores dimensiones de todas las imágenes redimensionadas, y el tamaño realmente especificado. Eso significa que nunca obtendrás un tamaño de mosaico menor que el tamaño "[-geometry](https://imagemagick.org/command-line-options/#geometry)" especificado. Puedes eliminar el enorme tamaño de los mosaicos del ejemplo anterior modificando el "[-geometry](https://imagemagick.org/command-line-options/#geometry)" por defecto. Por ejemplo, eliminando el componente de 'tamaño', ninguna de las imágenes será redimensionada, y el tamaño del 'mosaico' se establecerá según las mayores dimensiones de todas las imágenes dadas. Por ejemplo, aquí pido a montage que disponga en mosaico usando la imagen más grande dada con un pequeño hueco entre mosaicos. Este es un ajuste muy típico para usar cuando todas las imágenes de entrada son pequeñas y de aproximadamente el mismo tamaño.

  magick montage balloon.gif medical.gif present.gif shading.gif \
          -geometry +2+2   montage_geom.jpg

[Salida de IM]

Por ejemplo, aquí reemplacé una imagen con una imagen 'logo' más grande, pero configuré el ajuste de redimensionado a '48x48' para redimensionar tanto imágenes más pequeñas como más grandes.

  magick montage balloon.gif medical.gif present.gif logo: \
          -geometry 48x48+2+2   montage_geom_size.jpg

[Salida de IM]

Y aquí nuevamente restrinjo el redimensionado solo a imágenes más grandes que el tamaño de mosaico especificado.

  magick montage balloon.gif medical.gif present.gif logo: \
          -geometry 48x48\>+2+2   montage_geom_larger.jpg

[Salida de IM]

Como puedes ver, el espaciado entre imágenes parece ser mayor que el espaciado de 2 píxeles solicitado. Pero ese no es el caso. Los mosaicos todavía están separados por 2 píxeles, pero las imágenes en sí no llenan el tamaño de mosaico de 48x48 solicitado. La imagen 'logo' todavía fue redimensionada para caber en el mosaico de 48x48 píxeles. Si no quieres ningún redimensionado, entonces define solo el espaciado entre los mosaicos. Alternativamente, usa un tamaño especial como '1x1<', que le dice a IM que solo redimensione imágenes más pequeñas al tamaño dado. Como ninguna imagen puede ser más pequeña que 1 píxel, ninguna imagen será redimensionada. El tamaño del mosaico será entonces nuevamente la mayor dimensión de todas las imágenes de la página. Consulta Geometría cero, se requiere precaución para conocer las razones por las que podría interesarte hacer esto.

Geometría - Espaciado del mosaico

La parte posicional del ajuste "[-geometry](https://imagemagick.org/command-line-options/#geometry)" añadirá espacio entre los 'mosaicos' individuales, agregando un Borde de esas dimensiones alrededor de los mosaicos antes de Concatenarlos juntos. Eso significa que para el ajuste "[-geometry](https://imagemagick.org/command-line-options/#geometry)" por defecto, de '+4+3', los mosaicos estarán espaciados de los bordes izquierdo y derecho de la imagen final por 4 píxeles, y tendrán un espaciado de 8 píxeles (el doble del tamaño dado) horizontalmente entre los mosaicos. Lo mismo aplica para el espaciado vertical. Observa cómo el espacio entre los mosaicos cuando todas las imágenes fueron redimensionadas (penúltimo ejemplo) es el doble del tamaño del espacio alrededor de los bordes.

Controles de disposición de mosaicos

La siguiente opción más importante en "magick montage" es el ajuste "[-tile](https://imagemagick.org/command-line-options/#tile)". Esto le indica a montage qué límites quieres sobre cómo se disponen las imágenes en mosaico en el resultado final. En ImageMagick versión 6, "magick montage" hará una suposición informada sobre cuál es la mejor forma de disponer en mosaico un número dado de imágenes, cuando no proporcionas pistas con "[-tile](https://imagemagick.org/command-line-options/#tile)". Sin embargo, asume que las imágenes que se disponen en mosaico son de naturaleza aproximadamente cuadrada, ya que no examina las relaciones de aspecto de las imágenes al decidir la disposición a usar.

  magick montage font_1.gif      -geometry 16x16+1+1  tile_1.gif
  magick montage font_[12].gif   -geometry 16x16+1+1  tile_2.gif
  magick montage font_[123].gif  -geometry 16x16+1+1  tile_3.gif
  magick montage font_[1-4].gif  -geometry 16x16+1+1  tile_4.gif
  magick montage font_[1-5].gif  -geometry 16x16+1+1  tile_5.gif
  magick montage font_[1-6].gif  -geometry 16x16+1+1  tile_6.gif
  magick montage font_[1-7].gif  -geometry 16x16+1+1  tile_7.gif
  magick montage font_[1-8].gif  -geometry 16x16+1+1  tile_8.gif
  magick montage font_[1-9].gif  -geometry 16x16+1+1  tile_9.gif
  magick montage font_[0-9].gif  -geometry 16x16+1+1  tile_0.gif

[Salida de IM] [Salida de IM] [Salida de IM] [Salida de IM] [Salida de IM] [Salida de IM] [Salida de IM] [Salida de IM] [Salida de IM] [Salida de IM]

| La extraña sintaxis "[1-5]" es una abreviatura de la shell de UNIX, que se expande en una lista de nombres de archivo. El comando "magick montage" en sí no ve estos caracteres, solo la lista de archivos resultante.
---|---
ImageMagick es bastante bueno averiguando el ajuste "[-tile](https://imagemagick.org/command-line-options/#tile)" correcto a usar para un número específico de imágenes de entrada. Aquí hay una tabla del número de imágenes de entrada y el ajuste de mosaico que IM usará para disponer esas imágenes. | Núm. de imágenes | Ajuste de mosaico
---|---
1 | 1x1
2 | 2x1
3 | 3x1
4 | 2x2
5 - 6 | 3x2
7 - 8 | 4x2
| | Núm. de imágenes | Ajuste de mosaico
---|---
9 | 3x3
10 - 12 | 4x3
13 - 15 | 5x3
16 - 20 | 5x4
21 - 24 | 6x4
25 | 5x5
| | Núm. de imágenes | Ajuste de mosaico
---|---
26 - 30 | 6x5
31 - 36 | 7x5
31 - 35 | 7x5
36 | 6x6
37 - 42 | 7x6
43 - 48 | 8x6
Sin embargo, ten en cuenta que IM no seleccionará automáticamente un ajuste de mosaico 6x3 de 'ajuste perfecto' para 18 imágenes, ni un ajuste 7x4 para 28 imágenes. Sin embargo, si especificas un ajuste "[-tile](https://imagemagick.org/command-line-options/#tile)" específico, montage siempre creará una imagen lo suficientemente grande para contener esa cantidad de 'mosaicos'.

  magick montage font_[1-7].gif  -tile 9x1  -geometry 16x16+1+1  tile_9x1.gif
  magick montage font_[1-7].gif  -tile 4x3  -geometry 16x16+1+1  tile_4x3.gif
  magick montage font_[1-7].gif  -tile 3x3  -geometry 16x16+1+1  tile_3x3.gif
  magick montage font_1.gif      -tile 2x3  -geometry 16x16+1+1  tile_2x3.gif

[Salida de IM] [Salida de IM] [Salida de IM] [Salida de IM]

Como puedes ver, montage creó una imagen lo suficientemente grande para contener el número de mosaicos especificado, sin importar cuántas imágenes haya disponibles para llenar el espacio de mosaicos solicitado, sean 7 imágenes o solo 1 imagen. Solo llenará el espacio fila por fila; actualmente no se proporciona ninguna opción para hacer un llenado columna por columna del espacio de mosaicos. Antes de IM v6.1, montage truncaba automáticamente el espacio extra si el número de imágenes no usaba ese espacio. Como tal, un ajuste como la primera imagen "9x1" habría sido truncado para producir una imagen de mosaico "7x1". Debido a esto, los usuarios anteriores de montage a menudo usaban números grandes como "999x1" para generar una sola fila de imágenes. Ahora tal argumento producirá una imagen muy larga, y podría tardar mucho tiempo en que IM lo complete. Como tal... ¡Evita el uso de números de mosaico muy grandes en montage de IM!
Puedes evitar los problemas de espacio extra, y de múltiples imágenes, especialmente para un número desconocido de imágenes de entrada, eliminando el número de fila o el de columna del ajuste "[-tile](https://imagemagick.org/command-line-options/#tile)". El número faltante será tomado por montage como variable y montage solo creará suficiente espacio de mosaicos para contener TODAS las imágenes de entrada, produciendo solo una imagen, nunca múltiples imágenes.
  magick montage font_[1-7].gif  -tile x1  -geometry 16x16+1+1  tile_x1.gif
  magick montage font_[1-7].gif  -tile x2  -geometry 16x16+1+1  tile_x2.gif
  magick montage font_[1-7].gif  -tile x4  -geometry 16x16+1+1  tile_x4.gif
  magick montage font_[1-7].gif  -tile 4x  -geometry 16x16+1+1  tile_4x.gif
  magick montage font_[1-7].gif  -tile 5x  -geometry 16x16+1+1  tile_5x.gif
  magick montage font_[1-7].gif  -tile 9x  -geometry 16x16+1+1  tile_9x.gif

[Salida de IM] [Salida de IM] [Salida de IM] [Salida de IM] [Salida de IM] [Salida de IM]

Este es el uso más típico del ajuste "[-tile](https://imagemagick.org/command-line-options/#tile)", ya que garantiza que el montage tenga el tamaño correcto, mientras todavía le permite cierto control en la determinación del tamaño final de la matriz. Observa la última imagen, en la anterior, donde solicitamos 9 columnas de imágenes. IM todavía generó las 9 columnas solicitadas, aunque se dieron menos de 9 imágenes. Por otro lado, la primera imagen (una fila solicitada), tiene exactamente la longitud correcta para contener todas las imágenes. Si tienes más imágenes de entrada de las que montage puede disponer en el espacio dado por un ajuste "[-tile](https://imagemagick.org/command-line-options/#tile)", entonces montage puede generar múltiples imágenes, ya sea resultando en que se añadan números de secuencia de imagen a los nombres de archivo, o en que se cree algún tipo de animación GIF. Consulta Escritura de múltiples imágenes para más detalles. Por ejemplo, aquí he pedido a montage que guarde imágenes separadas para cada página generada, proporcionando un '%d' para el número de marco/escena/página de cada nombre de archivo de imagen.

  magick montage  font_*.gif  -tile 4x1  -geometry +2+2  multi_%d.gif

[Salida de IM] [Salida de IM] [Salida de IM]

Decoración con marco

La mejor parte de usar montage para organizar imágenes es que proporciona muchos controles adicionales para añadir 'adornos' extra alrededor de cada imagen. Por ejemplo, puedes definir mejor las imágenes que se muestran añadiendo un "[-frame](https://imagemagick.org/command-line-options/#frame)" alrededor de cada imagen.

  magick montage balloon.gif medical.gif present.gif shading.gif \
          -tile x1  -frame 5  -geometry +5+5   frame.jpg

[Salida de IM]

Esto no es como la misma opción en "magick" (Consulta el ejemplo Añadir un marco 3D). La opción frame de montage averiguará automáticamente los valores por defecto para el bisel interno y externo del marco. Como tal, solo se necesita un único número de argumento.

Decoración con borde

En algún momento alrededor de IM v6.1.0, "-border" se convirtió en una nueva opción decorativa de montage. Ahora añade 'relleno' extra alrededor de cada imagen, después de que ha sido redimensionada según el ajuste "-geometry".

  magick montage balloon.gif medical.gif present.gif shading.gif \
          -tile x1  -border 5 -geometry +5+5   border.jpg

[Salida de IM]

| La decoración "-border" no funciona actualmente cuando también se aplica la Decoración con marco.
---|---
| Antes de IM v6.1.0 (aprox.)-border se habría aplicado a las imágenes en el punto en que apareciera en la línea de comandos de "magick montage", igual que lo haría con "magick".

Es decir, el borde se habría añadido así a la imagen mucho antes de que las imágenes se redimensionen (según "-geometry"), lo que resultaba en anchos de borde diferentes alrededor de cada imagen dependiendo del tamaño de la imagen en ese punto. Fue para eliminar esta inconsistencia que -border se convirtió en un ajuste especial de montage.
---|---

Decoración con sombra

Añadir una sombra junto con el marco también es bastante bueno.

  magick montage balloon.gif medical.gif present.gif shading.gif \
          -tile x1  -frame 5  -shadow  -geometry +5+5   frame_shadow.jpg

[Salida de IM]

Por supuesto, en realidad no necesitas un marco para generar sombras de imagen

  magick montage balloon.gif medical.gif present.gif shading.gif \
          -tile x1  -shadow  -geometry +5+5  -background lightblue \
          shadow_noframe.jpg

[Salida de IM]

A partir de IM v6.3.1, cuando se implementaron las 'sombras suaves', las sombras ahora se conformarán según la transparencia de las imágenes que se muestran. |

  magick montage font_1.gif  font_7.gif  font_2.gif  font_0.gif \
          -tile x1  -shadow  -geometry +3+5 -background none \
          shadow_shaped.png

[Salida de IM]
Como puedes ver, la sombra usada por montage es en realidad un color semitransparente, lo que permite que el fondo afecte su color final. Esto significa que si creas un montage con un fondo texturizado, o usas un fondo transparente y lo superpones, la sombra hará lo correcto. Por supuesto, necesitas usar un formato de imagen que pueda manejar colores semitransparentes, como PNG. Recuerda que, debido a la Transparencia booleana de GIF, no puedes usar el formato de archivo de imagen GIF para este propósito. Ten en cuenta que las sombras no tienen en cuenta el espaciado "-geometry" entre las imágenes. Como tal, si las imágenes están demasiado juntas, la sombra de las imágenes anteriores puede quedar oculta por las imágenes posteriores. Por ejemplo...

  magick montage balloon.gif medical.gif present.gif shading.gif \
          -tile x1  -shadow  -geometry +1+1  -background none \
          shadow_spacing.png

[Salida de IM]

Por lo tanto, se recomienda proporcionar una cantidad razonable de espaciado "-geometry" al usar sombra. Para evitar 'recortar' demasiado las sombras en los bordes, la opción "-shadow" añadirá 4 píxeles de espaciado de borde extra en los bordes derecho e inferior de la imagen final. Esto se añade al espaciado "-geometry" normal proporcionado. Sin embargo, como puedes ver arriba, esto no siempre es espacio suficiente. Montage actualmente tampoco proporciona controles para el desplazamiento, el color o la 'suavidad' de la sombra generada (al menos no todavía), pero entonces, tampoco tenías ese control con la sombra rectangular dura que proporcionaban las versiones más antiguas de montage.

Etiquetado de imágenes en el montage

También puedes indicar a montage que etiquete la imagen con sus nombres de archivo de origen, aunque probablemente necesites redimensionar los marcos de imagen, o las etiquetas podrían no caber, truncando la etiqueta de texto. En este caso, añadimos un "60x60>" a la cadena de geometría, que le indica a IM que reduzca las imágenes más grandes para que quepan en este espacio, pero no que agrande las imágenes si son más pequeñas. Este es probablemente el uso más típico de montage.

  magick montage -label '%f'  balloon.gif medical.gif rose: present.gif shading.gif \
          -tile x1  -frame 5  -geometry '60x60+4+4>'  label_fname.jpg

[Salida de IM]

El '%f' es un carácter de formato especial, que puede extraer varios detalles sobre las imágenes en memoria. Consulta Escapes de propiedades de imagen para detalles de otra información que puedes extraer de las imágenes. No tienes que usar un "[-frame](https://imagemagick.org/command-line-options/#frame)" al etiquetar miniaturas. Las etiquetas no llevan sombra, de modo que permanecen claramente legibles.

  montage -label '%f'  balloon.gif medical.gif logo: present.gif shading.gif \
          -tile x1 -shadow -geometry '60x60+2+2>'  label_shadow.jpg

[Salida de IM]

Y a partir de IM v 6.2.1, ahora puedes reetiquetar imágenes después de que han sido leídas usando el operador de atributo de imagen "[-set](https://imagemagick.org/command-line-options/#set)". Usemos el operador "[-set](https://imagemagick.org/command-line-options/#set)" para añadir más información sobre las imágenes. Y también algunos ajustes más de montage...

  magick montage balloon.gif medical.gif logo: present.gif shading.gif \
          -tile x1  -geometry '90x32+2+2>'  -pointsize 10 \
          -set label '%f\n%wx%h'   -background SkyBlue   label_fname3.jpg

[Salida de IM]

Como mostramos en los ejemplos anteriores, puedes usar el ajuste "[-label](https://imagemagick.org/command-line-options/#label)" para definir la etiqueta por defecto de una imagen, a medida que se leen, o puedes reetiquetar la imagen posteriormente usando el operador "[-set](https://imagemagick.org/command-line-options/#set)". Ten en cuenta que '%wx%h da el ancho y el alto actuales en píxeles de la imagen tal como está en memoria. Si el tamaño de la imagen fue modificado, por ejemplo durante la entrada, esto puede ser diferente al tamaño de las imágenes en disco (o de creación). Usa '%[width]x%[height]' en su lugar si quieres su tamaño en píxeles en memoria.
También puedes etiquetar imágenes de forma diferente estableciendo la etiqueta de imágenes individuales. Cualquiera de las opciones puede usarse, aunque necesitarás usar paréntesis para limitar a qué imágenes se aplicará el operador "[-set](https://imagemagick.org/command-line-options/#set)". Aquí, por ejemplo, usamos ambas formas de etiquetado. Pero añadamos también un título al montage, simplemente porque podemos...
  magick montage -label Balloon   balloon.gif  \
          -label Medical   medical.gif  \
          \( present.gif  -set label Present  \) \
          \( shading.gif  -set label Shading  \) \
          -tile x1  -frame 5  -geometry '60x60+2+2>' \
          -title 'My Images'     titled.jpg

[Salida de IM]

Puedes desactivar el etiquetado de imágenes para la(s) siguiente(s) imagen(es) usando un "-label '' " o "+label". Sin embargo, como verás más adelante, estos dos ajustes no son exactamente iguales. Lo mismo aplica para una operación de etiqueta "[-set](https://imagemagick.org/command-line-options/#set)" posterior a la lectura.

  magick montage             balloon.gif \
          -label 'My Image'  medical.gif \
          +label             present.gif \
          -label ' '         shading.gif \
          -tile x1  -frame 5  -geometry '60x60+2+2>'   labeling.jpg

[Salida de IM]

La última imagen muestra cómo, usando un espacio como etiqueta de imagen, puedes crear un espacio de etiqueta de imagen, pero dejarlo en blanco. Esto presenta una buena regla general al usar montage...

¡O etiquetas todas tus imágenes, o ninguna de ellas!

No tienes que etiquetar tus imágenes durante la operación de montage en sí. Tanto el formato MIFF como el PNG pueden almacenar una etiqueta como parte de su formato de imagen. Montage etiquetará automáticamente cualquier imagen leída que ya contenga una etiqueta. Esto es automático y no necesita especificarse, y he usado esta técnica para generar algunos montages de imágenes muy complejos. Por ejemplo, la matriz de montage en Ejemplos de ángulo de anotación se creó usando esta técnica. Si no quieres este etiquetado automático, debes indicar específicamente a montage que reinicie todas las etiquetas que se leen o crean a la cadena vacía, usando "-label ''" antes de leer la imagen. O puedes simplemente eliminar los metadatos de la etiqueta usando "+set label" después de leer las imágenes. Aquí es donde "[+label](https://imagemagick.org/command-line-options/#label)" difiere de usar una etiqueta vacía ("-label ''"). El primero reiniciará el comportamiento por defecto para volver a usar automáticamente cualquier metadato de etiqueta que la imagen leída pueda tener, mientras que el segundo reemplaza la etiqueta con una cadena vacía, lo que efectivamente elimina la etiqueta. También puedes conservar la etiqueta original de la imagen usando "-label '%l'", lo que puede ser útil como una opción de etiquetado NO-OP en scripts de procesamiento de imágenes. Ten en cuenta que "[-set](https://imagemagick.org/command-line-options/#set)" no puede restaurar la etiqueta original de una imagen, una vez que ha sido modificada o eliminada, ya sea usando "[-label](https://imagemagick.org/command-line-options/#label)" o "[-set](https://imagemagick.org/command-line-options/#set)"

  magick -label 'medical'  medical.gif  label_medical.png
  magick -label 'logo'     logo:        label_logo.png
  magick -label 'rose'     rose:       label_rose.png

  magick montage    label_medical.png \
          -label '' label_logo.png    \
          +label    label_rose.png    \
          -tile x1  -frame 5  -geometry '60x60+2+2>' label_control.jpg

[Salida de IM]

En lo anterior puedes ver que la primera imagen fue etiquetada usando la etiqueta suministrada con la propia imagen. La segunda tuvo su etiqueta entrante eliminada por un ajuste "-label '' ", mientras que la tercera también usó la etiqueta de la imagen porque desactivamos el ajuste de etiqueta con "[+label](https://imagemagick.org/command-line-options/#label)".

Uso de metadatos guardados en la imagen

Al generar imágenes para su uso posterior por montage, es importante saber qué tipo de metadatos de imagen puede guardar un formato de archivo de imagen específico. Por ejemplo, solo los formatos de archivo de imagen PNG y MIFF pueden almacenar realmente metadatos 'label' en su formato de archivo de imagen guardado...

  magick -label 'GIF'  balloon.gif  label.gif
  magick -label 'JPG'  medical.gif  label.jpg
  magick -label 'PNG'  present.gif  label.png
  magick -label 'MIFF' shading.gif  label.miff

  montage label.gif label.jpg label.png label.miff \
          -tile x1  -frame 5  -geometry '60x60+2+2>' label_files.jpg
  rm label.*

[Salida de IM]

Sin embargo, todos los formatos de archivo comunes te permiten usar metadatos 'comment', que puedes usar especificando un argumento '%c' para "[-label](https://imagemagick.org/command-line-options/#label)".

  magick -comment 'GIF'  balloon.gif  comment.gif
  magick -comment 'JPG'  medical.gif  comment.jpg
  magick -comment 'PNG'  present.gif  comment.png
  magick -comment 'MIFF' shading.gif  comment.miff

  magick montage -label '%c' comment.gif comment.jpg comment.png comment.miff \
          -tile x1  -frame 5  -geometry '60x60+2+2>' comment_files.jpg
  rm comment.*

[Salida de IM]

Esto suele ser más útil para fotos guardadas en el formato de archivo JPEG, aunque los comentarios de imagen JPEG generalmente son demasiado largos (a menudo párrafos enteros describiendo la imagen), para su uso como etiquetas de montage, ya que no se ajustarán por palabra (consulta Montage de fotos Polaroid para un método alternativo de etiquetado usando metadatos 'comment' de imagen). Muchos otros programas también añaden automáticamente etiquetas y comentarios de 'creado-por' a las imágenes que guardan (PUAJ), por lo que se recomienda cierta precaución. Al programa GIMP particularmente le gusta añadir tales comentarios y etiquetas, a menos que le indiques que no lo haga, cada vez que guardas una imagen. Ten en cuenta que IM generalmente no se usa para añadir comentarios a archivos JPEG guardados (debido a la Compresión con pérdida de JPEG) a menos que se procesen por otras razones. En su lugar, normalmente se añaden por algún otro método para evitar leer y reescribir los datos de la imagen y, por lo tanto, degradar los archivos de imagen JPEG a los que estás añadiendo comentarios. Consulta las opciones de Procesamiento JPEG sin pérdidas, para algunos de tales métodos. También es importante señalar que el etiquetado (y los 'comentarios' de imagen) no es específico de montage. Montage simplemente hace uso automático de las etiquetas de imagen si están presentes. Las etiquetas y los comentarios se adjuntan a las imágenes, y a sus formatos de archivo específicos, y no son específicos de montage ni siquiera de IM. Los formatos de archivo PNG y MIFF también te permiten usar metadatos 'caption', menos usados comúnmente.

  magick balloon.gif -set caption 'GIF'  caption.gif
  magick medical.gif -set caption 'JPG'  caption.jpg
  magick present.gif -set caption 'PNG'  caption.png
  magick shading.gif -set caption 'MIFF' caption.miff

  magick montage -label '%[caption]' caption.gif caption.jpg caption.png caption.miff \
          -tile x1  -frame 5  -geometry '60x60+2+2>' caption_files.jpg
  rm caption.*

[Salida de IM]

En realidad, ambos formatos de archivo te permiten guardar CUALQUIER Metadato de propiedad de imagen que pueda estar presente en una imagen cuando se guarda.

  magick balloon.gif -set my_data 'GIF'  my_data.gif
  magick medical.gif -set my_data 'JPG'  my_data.jpg
  magick present.gif -set my_data 'PNG'  my_data.png
  magick shading.gif -set my_data 'MIFF' my_data.miff

  magick montage -label '%[my_data]' my_data.gif my_data.jpg my_data.png my_data.miff \
          -tile x1  -frame 5  -geometry '60x60+2+2>' my_data_files.jpg
  rm my_data.*

[Salida de IM]

Dejar huecos en un montage

Si bien puedes dejar espacio extra en un montage en la parte inferior mediante el uso juicioso del ajuste "[-tile](https://imagemagick.org/command-line-options/#tile)" y controlando el número de imágenes dadas, dejar un espacio de mosaico vacío en medio de un montage requiere el uso de una imagen especial. La imagen generada "null:" se definió específicamente para este propósito. La posición en la que aparece no recibirá ninguna etiqueta (incluso si se define una), ni tendrá ningún 'adorno' de marco o sombra añadido. El mosaico simplemente se deja completamente vacío, excepto por el color de fondo (o textura) del propio lienzo de dibujo del montage.

  magick montage -label 'Image' medical.gif null: present.gif \
          -tile x1  -frame 5  -geometry +2+2   montage_null.jpg

[Salida de IM]

Ten en cuenta que para otros comandos de IM, la imagen "null:" se representa como una imagen transparente de un solo píxel. También se usa como una 'imagen de error' para opciones como "[-crop](https://imagemagick.org/command-line-options/#crop)" o "[-trim](https://imagemagick.org/command-line-options/#trim)" que podrían producir una imagen 'cero' o vacía como resultado de la operación. Esta imagen especial no puede guardarse y luego usarse posteriormente para dejar huecos; actualmente solo es 'especial' si se da en la línea de comandos de "magick montage". | _No hay método, en este momento, que permita que las imágenes del montage abarquen múltiples filas o columnas, como puedes hacer en las tablas HTML. Tampoco puedes generar filas y columnas de tamaño variable para ajustarse mejor a la matriz de imágenes que se genera.

Si realmente necesitas este tipo de capacidad, tendrás que desarrollar tu propia aplicación de tipo montage. Si desarrollas algo, por favor contribúyelo, y veremos cómo fusionarlo en la aplicación de montage existente.

Algunas soluciones para esto incluyen etiquetar y enmarcar las miniaturas de imagen tú mismo y luego usar Concatenar imágenes o usar una técnica de Capas de imagen de forma más libre.

_
---|---


Más ajustes de montage Los ajustes de "magick montage" que he mostrado arriba son solo los controles básicos de montage. Hay muchos otros ajustes que podrías considerar para tus propias necesidades. Ajustes de color del montage [**-background**](https://imagemagick.org/command-line-options/#background) El color fuera del marco dibujado. A menudo se establece en 'none' o 'transparent', para su uso en páginas web. El ajuste -texture se usará en su lugar si se proporciona.
[**-bordercolor**](https://imagemagick.org/command-line-options/#bordercolor) El color de relleno dentro del marco para las imágenes, o cualquier relleno de borde. Cualquier área transparente en una imagen se convertirá en este color, a menos que no se añada tal decoración.
[**-mattecolor**](https://imagemagick.org/command-line-options/#mattecolor) El color usado como color del marco. Ten en cuenta que el color también se hace más claro y más oscuro para dar al marco un aspecto 3D biselado. Así que este ajuste realmente define 5 colores. (Consulta también Enmarcado de imágenes)
[**-fill**](https://imagemagick.org/command-line-options/#fill) El color de relleno para las etiquetas de texto y los títulos.
[**-stroke**](https://imagemagick.org/command-line-options/#stroke) El color del trazo para las etiquetas de texto y los títulos.
Ajustes de control del montage

[**-tile**](https://imagemagick.org/command-line-options/#tile) {_cols_}x{_rows_} El número de imágenes a lo ancho y a lo alto usado para llenar una sola imagen de montage. Si se leyeron o crearon más imágenes de las que caben en una sola imagen de montage, entonces se crearán múltiples imágenes. (Consulta Controles de mosaico arriba) [**-title**](https://imagemagick.org/command-line-options/#title) {_string_} Establece un título sobre todo el montage, usando la misma fuente (pero más grande) que la usada para etiquetar las imágenes individuales. [**-frame**](https://imagemagick.org/command-line-options/#frame) {_width_} Crea un marco alrededor del cuadro que contiene la imagen, usando el width proporcionado (debe ser al menos 2, pero 5 o 6 es un buen valor). Si se usa, cualquier transparencia en las imágenes también se convertirá en el color del borde. [**-border**](https://imagemagick.org/command-line-options/#frame) {_width_} Crea un borde alrededor de la imagen, usando el width proporcionado. Si se usa, cualquier transparencia en las imágenes también se convertirá en el color del borde. [**-shadow**](https://imagemagick.org/command-line-options/#shadow) Genera una sombra del marco. Ten en cuenta que no se requiere ni se espera ningún argumento. [**-texture**](https://imagemagick.org/command-line-options/#texture) {_filename_} Usa la textura dada (imagen en mosaico) para el fondo en lugar de un color específico. Consulta la sección sobre Fondo y transparencia más abajo para más información. [**-geometry**](https://imagemagick.org/command-line-options/#geometry) {_W_}x{_H_}+{_X_}+{_Y_} Redimensiona las imágenes después de que todas hayan sido leídas antes de que montage las superponga en su lienzo. También define el tamaño y el espaciado entre los mosaicos en los que se dibujan las imágenes. Si no se especifica ningún tamaño, las imágenes no serán redimensionadas. [**-gravity**](https://imagemagick.org/command-line-options/#gravity) {_direction_} si la imagen es más pequeña que el marco, dónde dentro del marco se colocará la imagen. Por defecto está centrada.

A lo anterior se añaden todos los ajustes de fuente que el operador de creación de imágenes "label:" entiende (Consulta Generador de imágenes de etiqueta). Estos ajustes se usan para la creación de etiquetas añadidas debajo de la imagen mostrada. Estos incluyen ajustes como "[-font](https://imagemagick.org/command-line-options/#font)", "[-pointsize](https://imagemagick.org/command-line-options/#pointsize)" (ignorado para "[-title](https://imagemagick.org/command-line-options/#title)"), "[-density](https://imagemagick.org/command-line-options/#density)", "[-fill](https://imagemagick.org/command-line-options/#fill)", "[-stroke](https://imagemagick.org/command-line-options/#stroke)", y "[-strokewidth](https://imagemagick.org/command-line-options/#strokewidth)". Siempre que cualquiera o todos los ajustes anteriores se definan o reinicien, antes del argumento final del 'nombre de archivo de salida', montage los usará como hayas solicitado. Reutilización de ajustes para lectura/creación de imágenes Ten en cuenta, sin embargo, que muchas de estas opciones también se usan para otros propósitos, ya sea en la generación de imágenes o durante el procesamiento de imágenes. Pero gracias al manejo de la línea de comandos 'haz las cosas a medida que las ves' en IM v6, esto no presenta ningún problema para el comando "magick montage". Eso significa que eres libre de usar cualquiera de estos ajustes de opción para leer, crear o modificar las imágenes que se leen, y luego reiniciar esos ajustes después de que todas las imágenes hayan sido leídas o creadas. El valor del ajuste final será lo que montage use para su procesamiento final. Este no era el caso en las versiones de IM anteriores a la versión 6, en las que generalmente era imposible separar los ajustes de creación de imágenes de los ajustes de montage, sin generar imágenes intermedias (como en el ejemplo de Etiquetas de imagen anterior). Aquí hay un ejemplo práctico de reutilización de ajustes. Quería hacer una tabla de algunas de las fuentes que he estado usando en estas páginas de ejemplo, y luego reiniciar los ajustes a otros valores para el procesamiento final de las imágenes por montage.

  magick montage -pointsize 24 -background Lavender \
          -font Candice      -label Candice      label:Abc-123 \
          -font Corsiva      -label Corsiva      label:Abc-123 \
          -font SheerBeauty  -label SheerBeauty  label:Abc-123 \
          -font Ravie        -label Ravie        label:Abc-123 \
          -font Arial        -label Arial        label:Abc-123 \
          -font ArialI       -label ArialI       label:Abc-123 \
          -font ArialB       -label ArialB       label:Abc-123 \
          -font ArialBk      -label ArialBk      label:Abc-123 \
          -font CourierNew   -label CourierNew   label:Abc-123 \
          -font LokiCola     -label LokiCola     label:Abc-123 \
          -font Gecko        -label Gecko        label:Abc-123 \
          -font Wedgie       -label Wedgie       label:Abc-123 \
          -font WebDings     -label WebDings     label:Abc-123 \
          -font WingDings    -label WingDings    label:Abc-123 \
          -font WingDings2   -label WingDings2   label:Abc-123 \
          -font Zymbols      -label Zymbols      label:Abc-123 \
          \
          -frame 5  -geometry +2+2   -font Arial -pointsize 12 \
          -background none  -bordercolor SkyBlue  -mattecolor DodgerBlue \
          montage_fonts.gif

[Salida de IM]

Observa las dos etapas del comando "magick montage". Las cuales marqué claramente usando una línea adicional casi vacía. La primera parte es esencialmente exactamente como definirías múltiples imágenes usando el comando "magick" normal de IM, y se procesa en el mismo orden, 'hazlo a medida que lo ves'. La segunda parte, define todos los ajustes que quería que el propio comando "magick montage" usara. Es decir, el enmarcado, el redimensionado de imágenes, las fuentes y los colores que quería usar en la imagen final del montage. Tengo especial cuidado en reiniciar los ajustes "[-font](https://imagemagick.org/command-line-options/#font)" y "[-pointsize](https://imagemagick.org/command-line-options/#pointsize)" para el etiquetado debajo de las imágenes del montage. Si bien puedes separar las opciones de "magick montage" de esta forma, en realidad puedes definir los ajustes de montage en cualquier momento en la línea de comandos. Siempre que esos ajustes no interfieran con tus opciones de creación y procesamiento de imágenes, y todavía estén definidos correctamente cuando se alcance el final de la línea de comandos, "magick montage" los usará. NOTA AL MARGEN: Quizás te interese mirar el script de shell que escribí para hacer algo similar a lo anterior (y que funciona con versiones anteriores de montage) para mostrar un directorio de fuentes truetype (.ttf), llamado "[**show_fonts**](../static/img/scripts/show_fonts)". Otro ejemplo de script de shell es "[**show_colors**](../static/img/scripts/show_colors)".

Diferencias de opciones entre montage y magick

Ahora bien, aunque "magick montage" generalmente te permite usar cualquier ajuste y operador de "magick" al leer y procesar sus imágenes de entrada, hay algunas diferencias que deben destacarse. Estos operadores y ajustes de "magick" son diferentes cuando se usan dentro de "magick montage".

[**-tile**](https://imagemagick.org/command-line-options/#tile) En "magick" el ajuste "[-tile](https://imagemagick.org/command-line-options/#tile)" define una imagen para usar como textura en lugar de usar el color "[-fill](https://imagemagick.org/command-line-options/#fill)". En "magick montage" define cómo disponer las 'celdas' de mosaico de imagen individuales. Consulta Controles de disposición de mosaicos arriba para más detalle. [**-frame**](https://imagemagick.org/command-line-options/#frame) En "magick" este es un operador usado para añadir un borde de marco 3D alrededor de las imágenes, y requiere 4 argumentos para funcionar correctamente (Consulta los ejemplos de Marco con convert). Consulta Decoración con marco para más detalle. [**-border**](https://imagemagick.org/command-line-options/#border) En algún momento alrededor de IM v6.1.0, este operador se convirtió en una opción especial de montage. Como tal, al igual que la opción frame anterior, solo toma un número como argumento, en lugar de dos argumentos como en el Borde con convert. Consulta Decoración con borde para más detalle. [**-shadow**](https://imagemagick.org/command-line-options/#shadow) La opción "[-shadow](https://imagemagick.org/command-line-options/#shadow)" en "magick" toma un argumento que se usa para crear una sombra borrosa y suave que puede colocarse bajo una segunda copia de la imagen original. Sin embargo, en "magick montage" esto es solo un ajuste booleano que simplemente activa y desactiva las capacidades de sombreado rectangular. Consulta Decoración con sombra para más detalle. [**-geometry**](https://imagemagick.org/command-line-options/#geometry) La opción "[-geometry](https://imagemagick.org/command-line-options/#geometry)" en "magick montage" simplemente se guarda para proporcionar el tamaño de las imágenes dentro de cada celda del montage final, y el espaciado entre las celdas. En "magick" redimensiona solo la última imagen, y establece el desplazamiento para la Composición de imágenes.

Si realmente necesitas usar la forma de "magick" de estas opciones, entonces tendrás que preprocesar tus imágenes usando "magick" antes de pasarlas a "magick montage". Un método usando archivos intermedios se demostró en el ejemplo de Etiquetas de imagen anterior. Otro es simplemente hacer tu procesamiento en "magick" y simplemente canalizar las múltiples imágenes resultantes a "magick montage". Esta separación es fácil de hacer si siempre haces primero tu manejo de entrada de imágenes, y luego configuras los ajustes específicos de "magick montage" después, tal como he hecho en todos estos ejemplos. Esto se muestra especialmente en el último ejemplo de fuentes anterior. Por ejemplo, enmarquemos nuestras imágenes usando el frame de "magick", y luego enmarquémoslas nuevamente usando los marcos etiquetados de "magick montage".

  magick -label %f   balloon.gif medical.gif present.gif shading.gif \
          -mattecolor peru  -frame 10x5+3+0    miff:-  |\
     magick montage  -   -tile x1  -frame 5  -geometry '64x56+5+5>' double_frame.jpg

[Salida de IM]

También puedes ver los argumentos extra que requiere la forma de "magick" del operador "[-frame](https://imagemagick.org/command-line-options/#frame)".


Índices de directorios de imágenes

Mapas de imágenes en miniatura HTML

Montage está especialmente diseñado para generar mapas de miniaturas de imágenes. Por ejemplo, aquí he creado un índice del directorio de origen de Imágenes de fotos, que contiene las fotos digitales usadas para los ejemplos a lo largo de los ejemplos de IM. Haz clic en la imagen 'art' de abajo para ver el resultado. |

  magick montage -label '%t\n%[width]x%[height]' \
          -size 512x512 '../img_photos/*_orig.*[120x90]' -auto-orient \
          -geometry +5+5 -tile 5x  -frame 5  -shadow  photo_index.html


Ejemplos de IM
Almacén de fotos

| Observa el uso de '%[width]x%[height]' en lugar de solo '%wx%h'. Esto es importante ya que la imagen se redimensiona a medida que se lee. El primero etiquetará las imágenes con su tamaño en píxeles original tal como está en disco, mientras que el segundo usará el tamaño redimensionado actual de la imagen. Esto es algo que los usuarios pasan por alto fácilmente.
---|---
El resultado de este comando fueron tres archivos...

[photo_index.png](../static/img/montage/photo_index.png) El montage de todas las miniaturas de las imágenes
[photo_index_map.shtml](../static/img/montage/photo_index_map.shtml.txt) Un 'mapa de imagen' HTML para la imagen de miniaturas
[photo_index.html](../static/img/montage/photo_index.html.txt) La página de índice de miniaturas HTML para la World Wide Web.
Esto también incluye una copia del mapa de imagen anterior.

Por supuesto, no tienes que generar un archivo de índice HTML si solo quieres una imagen de índice. En ese caso, simplemente reemplaza "photo_index.html" en el comando anterior con la imagen que quieras generar. Observa el uso del Escape de propiedad de imagen '%t' para el "[-label](https://imagemagick.org/command-line-options/#label)" de la imagen. Este es el nombre de archivo de la imagen sin ningún componente de 'ruta'. Aunque el enlace HTML todavía contendrá los componentes de 'ruta' apropiados, lo que te permite construir la imagen de índice en un directorio diferente al de las imágenes mismas. Las imágenes de origen "'*_orig.*'" en los ejemplos anteriores están entrecomilladas, de modo que el comando "magick montage" hace la expansión de '*' por sí mismo, y no la shell de la línea de comandos. Esto evita cualquier límite de longitud de línea de comandos con el que podrías tener problemas. Además, hago algún redimensionado inicial de las imágenes '[120x190]' a medida que las leo (consulta Modificadores de lectura de imagen). Para imágenes JPEG también especifiqué un ajuste "[-size](https://imagemagick.org/command-line-options/#size)" más pequeño, de modo que la biblioteca JPEG pueda hacer un escalado inicial muy aproximado, y no leer toda la imagen en memoria. Si esto no se hace, entonces las imágenes JPEG muy grandes podrían usar una enorme cantidad de memoria y ciclos de CPU cuando no hay una necesidad real. También "[-strip](https://imagemagick.org/command-line-options/#strip)" cualquier perfil que las imágenes puedan tener. Para más información, consulta Perfiles, eliminación y manejo de JPEG y Lectura de imágenes JPEG. Recuerda que la opción "[-geometry](https://imagemagick.org/command-line-options/#geometry)" de montage también puede especificar un ajuste de redimensionado final, aunque en este caso no es necesario ya que lo hice durante el proceso de lectura, por lo que no establezco ningún 'tamaño' en ese ajuste. Finalmente, la opción "[-tile](https://imagemagick.org/command-line-options/#tile)" de '5x' se usa para garantizar que todas las imágenes aparezcan en una sola imagen; de lo contrario, "magick montage podría generar archivos HTML de varias páginas, que no están enlazados correctamente entre sí. Esto, con suerte, cambiará, aunque la generación de HTML no es un objetivo principal de ImageMagick. Para otras formas de generar miniaturas y páginas de índice HTML, lee la Página de ejemplos de miniaturas.

Mapas de índice HTML más pequeños, usando imágenes JPEG

La imagen de índice anterior generó una imagen de índice en formato PNG. Esto se usó porque es un formato sin pérdida, lo que puede ser importante cuando las imágenes que se indexan son de colores muy diferentes. También permite el uso de las nuevas funciones de 'sombras suaves' de montage si el color de fondo se establece en 'transparent' o 'none'. Las versiones muy antiguas de IM habrían generado una imagen GIF para lo anterior. Sin embargo, esto tiene una fuerte reducción de color en los resultados como parte de las limitaciones del formato. Tampoco permitió el uso de 'sombras suaves' semitransparentes como permite PNG. JPEG tampoco permite la semitransparencia, pero eso no es un problema si no usas un fondo transparente para la imagen. Sin embargo, es mucho más pequeño que PNG, lo que proporciona una forma de reducir drásticamente el tamaño de la imagen de índice, especialmente para uso web, y aun así manejar una amplia gama de colores. Sin embargo, la salida HTML anterior solo genera imágenes en formato PNG, por lo que necesitarás no solo convertir el PNG a JPEG, sino también algún procesamiento extra para corregir el archivo HTML. |

  magick montage -label '%t\n%[width]x%[height]' \
          -size 512x512 '../img_photos/*_orig.*[120x90]' -auto-orient \
          -geometry +5+5 -tile 5x  -frame 5  -shadow  photo_jpeg.html
  magick photo_jpeg.png photo_jpeg.jpg
  perl -i -lpe 's/src="photo_jpeg.png"/src="photo_jpeg.jpg"/' photo_jpeg.html
  rm -f  photo_jpeg.png  photo_jpeg_map.shtml


Ejemplos de IM
Almacén de fotos

Los comandos anteriores son bastante complicados, así que esto es lo que sucede...

  • Primero genero un índice HTML de miniaturas de montage, como hice anteriormente. Esto generó los archivos: "photo_jpeg.html" y "photo_jpeg.png"
  • Luego convertí la imagen PNG a una imagen JPEG más pequeña, con pérdida.
  • Después usé un pequeño script de una línea de 'perl' para cambiar el archivo HTML para que usara la imagen JPEG en lugar de la PNG.
  • Y finalmente eliminé la imagen PNG, así como el archivo de mapa SHTML que no necesito.

Y voilà, tenemos un índice de miniaturas usando una imagen JPEG muy pequeña para la imagen de índice de miniaturas. Aquí hay comparaciones de los tamaños de archivo de la imagen de índice de miniaturas...

[Texto de IM]

Es decir, la imagen usada para el índice es solo alrededor del 15% del tamaño de la imagen PNG original. ¡Un gran ahorro para una página web descargable de miniaturas! Puedes hacer la imagen JPEG aún más pequeña usando un ajuste "[-quality](https://imagemagick.org/command-line-options/#quality)" más bajo, aunque el ajuste por defecto produce un resultado muy razonable. Otras opciones posibles incluyen usar "[-sampling-factor](https://imagemagick.org/command-line-options/#sampling-factor) 2x1" para hacerla aún más pequeña.

Imágenes de índice visual (una solución sin montage)

Una alternativa a usar montage es usar un formato de entrada especial de "índice visual"... |

  magick 'vid:../img_photos/*_orig.*' vid_index.gif


Índice visual del
Almacén de fotos

Y también puede generar archivos de índice HTML 'clicables'. |

  magick 'vid:../img_photos/*_orig.*' vid_index.html


HTML visual del
Almacén de fotos

Es obvio que "VID:" usa montage internamente para generar la matriz de índice. Sin embargo, no tienes los mismos controles que si hubieras usado montage directamente. Ten en cuenta que un índice HTML VID crea una imagen de miniatura en formato PNG.

Un montage de fotos Polaroid

Con la llegada de una Transformación Polaroid compleja, ahora es posible generar un estilo de montage, y de indexado de montage, bastante diferente. |

  magick montage -size 256x256 '../img_photos/*_orig.*' -auto-orient \
          -auto-orient -thumbnail 128x128 \
          -set caption '%t' -bordercolor AliceBlue -background grey20 \
          +polaroid \
          +set label   -background white  -geometry +1+1  -tile 4x \
          polaroid_index.html


Montage
Polaroid

Ten en cuenta que, como usé "[+polaroid](https://imagemagick.org/command-line-options/#polaroid)" para enmarcar y etiquetar las imágenes, necesité redimensionar la imagen (usando "[-thumbnail](https://imagemagick.org/command-line-options/#thumbnail)") yo mismo, y asegurarme de que el "[-background](https://imagemagick.org/command-line-options/#background)" y la "[-label](https://imagemagick.org/command-line-options/#label)" de la imagen se hayan reiniciado antes de crear realmente la matriz de índice de "magick montage". Sin embargo, la Transformación Polaroid tiende a difuminar el texto durante la adición del 'rizo' a la imagen de miniatura. No obstante, puedes mejorar el resultado general generando las imágenes polaroid a un tamaño mayor y luego reduciendo el resultado en un 50%. El único inconveniente es el efecto de 'sombra' reducido. |

  magick montage -size 400x400  '../img_photos/*_orig.*' \
          -auto-orient -thumbnail 200x200 \
          -set caption '%t' -bordercolor Lavender -background grey40 \
          -pointsize 9  -density 144x144  +polaroid  -resize 50% \
          +set label   -background white  -geometry +1+1  -tile 5x \
          polaroid_index2.html


Montage
Polaroid
Más nítido

Este elegante montage, así como otras técnicas mostradas arriba, se usó para crear un script para generar un índice de miniaturas de montage en el directorio real "[photo_store](img_photos.html)". Consulta Índice del almacén de fotografías para ver los resultados de este script.


Técnicas especiales usando montage

Montage en columnas

Por defecto, "magick montage" solo puede colocar las imágenes en el orden dado (normalmente orden alfabético) fila por fila. Sin embargo, a veces te gustaría tenerlas mostradas en orden de columnas. Esto no puede hacerse con un solo comando, sino que requiere una tubería de al menos dos comandos. Por ejemplo, aquí genero una página de mosaicos de 5x3, usando dos montages. |

  magick montage font_*.gif  -tile 1x3  -geometry 16x16+1+1  miff:- |\
    magick montage -  -geometry +0+0 -tile 5x1  montage_columns.gif

[Salida de IM]
Ten en cuenta que es el primer "magick montage" el que crea los mosaicos y realiza cualquier dimensionado de mosaico por geometría, enmarcado, etiquetado y espaciado necesario. Luego mostrará una imagen por cada columna de mosaicos. El segundo "magick montage" simplemente concatena las columnas en imágenes de 'página' sin añadir más espacio entre columnas. Si solo quieres una sola imagen con un número variable de columnas, entonces puedes reemplazar el segundo "magick montage" con un "magick" para concatenar sin añadir espacio extra de 'páginas'. Por ejemplo... |

  magick montage font_*.gif  -tile 1x3  -geometry 16x16+1+1  miff:- |\
    magick - +append montage_columns_2.gif

[Salida de IM]

Mosaicos de montage superpuestos

En el Foro de usuarios de IM, durante una discusión entre Fred Weinhaus, alias fmw42, y otro usuario pooco, se descubrió que si estableces el espacio entre mosaicos (definido en el ajuste "[-geometry](https://imagemagick.org/command-line-options/#geometry)") en un número negativo, puedes en realidad superponer las áreas en mosaico en las que se dibujan las imágenes. Por ejemplo, aquí usamos un espaciado horizontal entre mosaicos negativo, para una sola fila de imágenes.

  magick montage null:   font_*.gif   null: \
          -tile x1 -geometry -5+2  montage_overlap.jpg

[Salida de IM]

Rotar las imágenes hará la serie superpuesta aún más interesante...

  magick montage null: font_*.gif null: -background none -rotate 30 \
          -background white -tile x1 -geometry -8+2  montage_rot_overlap.jpg

[Salida de IM]

Ten en cuenta que necesité añadir una imagen de espaciado "null:" especial al principio y al final de la fila de imágenes para que las imágenes no desborden el lienzo que "magick montage" calcula y genera. Esto nos presenta algunas posibilidades interesantes. Por ejemplo, podrías generar una fila muy interesante de miniaturas superpuestas, haciendo uso de la Transformación Polaroid rotada aleatoriamente.

  magick montage -size 400x400 null: ../img_photos/[a-m]*_orig.* null: \
          -auto-orient  -thumbnail 200x200 \
          -bordercolor Lavender -background black +polaroid -resize 30% \
          -gravity center -background none -extent 80x80 \
          -background SkyBlue -geometry -10+2  -tile x1  polaroid_overlap.jpg

[Salida de IM]

El uso de extent en lo anterior se usa para eliminar la aleatoriedad del tamaño de imagen que "[+polaroid](https://imagemagick.org/command-line-options/#+polaroid)" puede producir en diferentes 'ejecuciones', dando más control del espaciado y la superposición final entre imágenes. Este es un resultado muy interesante, aunque en realidad debería clasificarse como un ERROR, ya que este no es el propósito previsto de "magick montage". Tampoco esperaría que ningún mapeo de imágenes HTML funcione correctamente, sin algún arreglo por parte del usuario. Sin embargo, se demuestra una solución más compleja y controlable por el usuario para imágenes superpuestas usando una forma con scripts de Fusión de capas, que es la solución recomendada y más lógica. Consulta los ejemplos en Posicionamiento programado de imágenes en capas.

Modo de concatenación de montage

Como viste, montage tiene un modo de concatenación especial, que puede usarse para unir imágenes sin ningún espacio extra, igual que la opción "[-append](https://imagemagick.org/command-line-options/#append)". Sin embargo, recomiendo que establezcas la opción "[-tile](https://imagemagick.org/command-line-options/#tile)" apropiadamente, para dirigir la concatenación ya sea horizontalmente, verticalmente o en una matriz. Por ejemplo, aquí usamos un "-tile x1" para concatenar imágenes horizontalmente.

  magick montage balloon.gif medical.gif present.gif shading.gif \
          -mode Concatenate  -tile x1  montage_cat.jpg

[Salida de IM]

Pero también puedes usarlo para crear con igual facilidad una matriz de imágenes. Preferiblemente, las imágenes son del mismo tamaño, de modo que encajen correctamente.

  magick montage balloon.gif medical.gif present.gif shading.gif \
          -mode Concatenate  -tile 2x2  montage_array.jpg

[Salida de IM]

Al concatenar imágenes de diferentes tamaños, las imágenes se concatenan con alineación vertical 'superior', y luego alineación horizontal de fila 'izquierda'.

  magick montage medical.gif rose:      present.gif shading.gif \
          granite:    balloon.gif netscape:   recycle.gif \
          -mode Concatenate  -tile 4x  montage_cat2.jpg

[Salida de IM]

Sin embargo, la alineación vertical se vuelve extraña cuando también se añade el enmarcado.

  magick montage medical.gif rose:      present.gif shading.gif \
          granite:    balloon.gif netscape:   recycle.gif \
          -mode Concatenate  -tile 4x  -frame 5  montage_cat3.jpg

[Salida de IM]

Por supuesto, el enmarcado no es realmente parte del modo de concatenación, así que si "[-frame](https://imagemagick.org/command-line-options/#frame)" se establece antes del ajuste "[-mode](https://imagemagick.org/command-line-options/#mode)", se desactivará. Como tal, es poco probable que se vea esta peculiaridad, excepto por error cuando usas accidentalmente una 'geometría cero' (consulta más abajo). La concatenación de montage al formato de indexado de imágenes 'HTML' produce mapas de imagen incorrectos. Básicamente, el mapa de imagen resultante será como si el montage generado fuera una verdadera 'matriz' de imágenes dividida en partes iguales, en lugar de una concatenación de las imágenes en línea. En otras palabras, es incorrecto para líneas de imágenes 'cortas'.

Geometría cero, se requiere precaución

Con solo valores de espaciado "[-geometry](https://imagemagick.org/command-line-options/#geometry)" (sin redimensionado de imagen especificado), todos los marcos de imagen del montage se establecen al mismo tamaño, de modo que tanto la imagen más ancha como la más alta quepan, sin ser redimensionadas. Este es en sí mismo un comportamiento útil...

  magick montage present.gif rose: shading.gif \
          -frame 5  -geometry +1+1   montage_geom_1.jpg

[Salida de IM]

Sin embargo, se dejó un hueco de 1 píxel alrededor y entre los marcos de imagen. Pero si intentas eliminar esos huecos con una posición de "+0+0", te encuentras con un problema muy inusual...

  magick montage present.gif rose: shading.gif \
          -tile x1  -frame 5  -geometry +0+0  montage_geom_0.jpg

[Salida de IM]

La 'geometría cero' que especificaste (es decir, "-geometry 0x0+0+0"), tiene el efecto adicional de poner a montage en un modo de 'concatenación' (consulta arriba), que NO es lo que buscábamos en lo anterior. Para imágenes individuales tampoco importa si usamos un "[-append](https://imagemagick.org/command-line-options/#append)" cero (y por lo tanto el modo de concatenación). El resultado deseado es lo que queremos, sin bordes extra. Como tal, un "-geometry +0+0" está bien si solo estás usando "magick montage" para añadir una etiqueta a una imagen. Sin embargo, el modo de concatenación no se invocará si especificas un 'tamaño' de geometría distinto de cero para tus imágenes, aunque hayas usado un desplazamiento cero. Esto, a su vez, nos da una solución ingeniosa a nuestro problema original. Lo que hacemos es establecer un tamaño de imagen de geometría de "1x1" pero también decirle a IM que nunca reduzca las imágenes (usando un carácter "<") a este tamaño. En otras palabras, nunca redimensionar una imagen jamás, simplemente usar un desplazamiento cero, en un argumento de geometría distinto de cero.

  magick montage present.gif rose: shading.gif \
          -frame 5  -geometry '1x1+0+0<'  montage_geom_1x1.jpg

[Salida de IM]

Esto plantea otra buena regla general...

Siempre establece una geometría distinta de cero al usar montage

Aunque sea solo la geometría 'falsa' como la que usé arriba.

Manejo del fondo y la transparencia

Por defecto, las imágenes se superponen sobre el lienzo del montage, que se crea usando el ajuste de color "[-background](https://imagemagick.org/command-line-options/#background)", como puedes ver aquí. |

  magick montage font_9.gif  \( recycle.gif -set label recycle \)  medical.gif \
          -tile x1  -geometry +5+5  -background lightblue   bg_lightblue.gif

[Salida de IM]
En lugar de un color sólido, puedes usar en cambio "[-texture](https://imagemagick.org/command-line-options/#texture)" para definir una imagen de mosaico que usar en lugar del color "[-background](https://imagemagick.org/command-line-options/#background)". |

  magick montage font_9.gif  \( recycle.gif -set label recycle \)  medical.gif \
          -tile x1  -geometry +5+5   -texture bg.gif      bg_texture.gif

[Salida de IM]
Añadir marcos (que añaden espacio de borde extra en los mosaicos) simplemente añade más 'adornos' dibujados sobre el lienzo de fondo. |

  magick montage font_9.gif  \( recycle.gif -set label recycle \)  medical.gif \
          -tile x1  -frame 5  -geometry '40x40+5+5>' \
          -bordercolor lightblue  -texture bg.gif  bg_frame.gif

[Salida de IM]
Ten en cuenta que cuando hay marco, el ajuste "[-bordercolor](https://imagemagick.org/command-line-options/#bordercolor)" se usará para rellenar el interior del marco, convirtiéndose efectivamente en el color de fondo de la imagen. Observa también que cualquier área transparente de la imagen también se establece en este color. | _Antes de la versión 6.1.4 de IM, lo que se veía en las áreas transparentes de las imágenes estaba indefinido. En algunas versiones verías a través de la imagen enmarcada el color de fondo o la textura. En otras podrías obtener negro, o blanco. En otras versiones más podrías ver a través de todas las capas y la imagen final sería transparente donde la imagen original era transparente. Actualiza AHORA si esto es un problema para ti.

_
---|---
También es nueva en IM versión 6.1.4 la capacidad de usar un marco especial de 1 píxel de ancho. Esto básicamente eliminará el marco alrededor de las celdas de imagen por completo, pero conservando el relleno interno "[-bordercolor](https://imagemagick.org/command-line-options/#bordercolor)" alrededor (y debajo) de la imagen. Por ejemplo, compara un marco de '1' con el ancho de marco mínimo de '2'. |

  magick montage font_1.gif  \( recycle.gif -set label recycle \)  medical.gif \
          -tile x1  -frame 1  -geometry '40x40+5+5>' \
          -bordercolor lightblue  -texture bg.gif  bg_frame_1.gif

[Salida de IM]
|

  magick montage font_2.gif  \( recycle.gif -set label recycle \)  medical.gif \
          -tile x1  -frame 2  -geometry '40x40+5+5>' \
          -bordercolor lightblue  -texture bg.gif  bg_frame_2.gif

[Salida de IM]
Pero ¿qué pasa si quieres que tu montage tenga un fondo transparente? En particular, si planeas usarlo en una página web que contiene un mapeo de texturas. Simple, solo usa un color "[-background](https://imagemagick.org/command-line-options/#background)" de 'None' o 'Transparent', sin ninguna imagen "[-texture](https://imagemagick.org/command-line-options/#texture)" que anule ese ajuste. Por ejemplo, aquí generamos un montage transparente. Ten en cuenta que "[-geometry](https://imagemagick.org/command-line-options/#geometry)" todavía se usa para añadir espacio alrededor y entre las imágenes. |

  magick montage font_9.gif  recycle.gif  medical.gif \
          -tile x1  -geometry +2+2  -background none   bg_none.gif

[Salida de IM]
Por supuesto, si también usas "[-frame](https://imagemagick.org/command-line-options/#frame)", necesitas hacer el "[-bordercolor](https://imagemagick.org/command-line-options/#bordercolor)" transparente también. |

  magick montage font_9.gif  recycle.gif  medical.gif \
          -tile x1 -frame 5 -geometry '40x40+5+5>' \
          -bordercolor none  -background none    bg_framed_trans.gif

[Salida de IM]
Ten en cuenta que la opción "-shadow" de montage no se ve afectada en absoluto por todo lo anterior. Se aplica según la forma transparente final de las celdas, antes de superponerse sobre el color o la textura de fondo. |

  magick montage font_9.gif  recycle.gif  medical.gif \
          -tile x1  -shadow  -geometry '40x40+5+5>' \
          -texture bg.gif  bg_shadow.gif

[Salida de IM]
|

  magick montage font_9.gif  recycle.gif  medical.gif \
          -tile x1 -frame 5 -shadow  -geometry '40x40+5+5>' \
          -bordercolor none   -texture bg.gif  bg_shadow_framed.gif

[Salida de IM]

Cualquier sugerencia, idea u otros ejemplos de uso de "magick montage" son, por supuesto, siempre bienvenidos. Lo mismo aplica para cualquier cosa en estas páginas de ejemplo.


Tamaño de salida de la imagen del montage

Las matemáticas del montage son sencillas...

Básicamente, el ancho del montage debería ser....
  (geometry_size + 2*frame_size + 2*geometry_offset) * images_per_column

Es decir, cada 'celda' del montage tiene un marco y un espaciado (borde) de tamaño
fijo añadido a su alrededor antes de que las celdas se concatenen juntas.

En esencia, el tamaño del montage es también un múltiplo del tamaño del mosaico, lo que
puede facilitar dividir el montage, o reorganizar las 'celdas', si así se desea,
ya que son simples mosaicos de tamaño fijo en una matriz rectangular.

La altura es similar pero con el espaciado adicional necesario para las etiquetas y
el título opcional del montage, ambos mucho más difíciles de
calcular, ya que dependen en gran medida del texto, la fuente, el pointsize y los ajustes
de densidad.

También hay un efecto al añadir una sombra al montage en este cálculo,
pero parece ser una simple adición pequeña y fija a los bordes inferior y derecho.
No parece afectar el tamaño del mosaico usado.