Exemplos do ImageMagick -- Montagem, Matrizes de Imagens
- Geometria - Tamanho do Ladrilho (Redimensionamento de Imagem)
- Geometria - Espaçamento dos Ladrilhos
- Controles de Disposição dos Ladrilhos
- Decoração com Moldura
- Decoração com Borda
- Decoração com Sombra
- Rotulando as Imagens da Montagem
- Usando MetaDados Salvos da Imagem
- Configurações de Controle da Montagem
- Reutilizando Configurações para Leitura/Criação de Imagens
-
Mapas de Imagem de Miniaturas em HTML (mapa de índice básico)
- Mapas de Índice HTML Menores, usando imagens JPEG
- Índice Visual (uma solução sem montage)
-
Uma Montagem de Fotos Polaroid (um mapa de índice sofisticado)
- Ladrilhos de Montagem Sobrepostos
- Modo de Concatenação da Montagem
- Geometria Zero (cuidado necessário)
- Tratamento de Fundo e Transparência
O uso original do "magick montage" é gerar tabelas de miniaturas de imagens, isto é, referenciar miniaturas de grandes coleções de imagens, especialmente fotos. E embora ainda possa ser usado para esse propósito, ele também pode fazer muito mais. Esta página examina o que você pode fazer com a montagem e como pode usá-la em suas próprias imagens.
Montagem, Introdução
O comando "[magick montage](https://imagemagick.org/www/montage.html)" é projetado para produzir uma matriz de imagens em miniatura. Algo como uma folha de provas de uma grande coleção de imagens. O "[magick montage](https://imagemagick.org/www/montage.html)" padrão sem nenhuma opção é muito simples, com quadrados de contenção bem grandes, sem moldura, rótulos ou sombras.
magick montage balloon.gif medical.gif present.gif shading.gif montage.jpg
Geometria - Tamanho do Ladrilho e Redimensionamento de Imagem
A configuração "[-geometry](https://imagemagick.org/command-line-options/#geometry)" é o controle mais importante do "magick montage". Ela define o tamanho das imagens individuais em miniatura e o espaçamento entre elas. A parte de tamanho da geometria é usada como argumento para o Operador de Redimensionamento, incluindo todas as suas flags de propósito especial. A parte de posição da opção é interpretada como a quantidade de espaço de borda a deixar ao redor da imagem, então tornando-a menor, você tornará as lacunas entre as imagens menores. A configuração padrão de "[-geometry](https://imagemagick.org/command-line-options/#geometry)" é '120x120>+4+3', o que significa ajustar qualquer imagem fornecida em uma caixa de 120x120 pixels de tamanho. Se a imagem for maior, encolha-a, mas não redimensione imagens menores (conforme a Flag de Apenas Encolher Maiores ('>'). O tamanho do 'ladrilho' é então definido pelas maiores dimensões de todas as imagens redimensionadas, e o tamanho realmente especificado. Isso significa que você nunca obterá um tamanho de ladrilho menor que o tamanho de "[-geometry](https://imagemagick.org/command-line-options/#geometry)" especificado. Você pode remover o enorme tamanho dos ladrilhos no exemplo anterior modificando o padrão de "[-geometry](https://imagemagick.org/command-line-options/#geometry)". Por exemplo, removendo o componente de 'tamanho', nenhuma das imagens será redimensionada, e o tamanho do 'ladrilho' será definido pelas maiores dimensões de todas as imagens fornecidas. Por exemplo, aqui peço à montagem que ladrilhe usando a maior imagem fornecida com uma pequena lacuna entre os ladrilhos. Esta é uma configuração bem típica de usar quando todas as imagens de entrada são pequenas e de tamanho aproximadamente igual.
magick montage balloon.gif medical.gif present.gif shading.gif \
-geometry +2+2 montage_geom.jpg
Por exemplo, aqui substituí uma imagem por uma imagem 'logo' maior, mas defini a configuração de redimensionamento para '48x48' para redimensionar tanto imagens menores quanto maiores.
magick montage balloon.gif medical.gif present.gif logo: \
-geometry 48x48+2+2 montage_geom_size.jpg
E aqui novamente restrinjo o redimensionamento apenas a imagens maiores que o tamanho de ladrilho especificado.
magick montage balloon.gif medical.gif present.gif logo: \
-geometry 48x48\>+2+2 montage_geom_larger.jpg
Como você pode ver, o espaçamento entre as imagens parece ser maior que o espaçamento de 2 pixels solicitado. Mas não é o caso. Os ladrilhos ainda estão separados por 2 pixels, mas as imagens em si não preenchem o tamanho de ladrilho de 48x48 solicitado. A imagem 'logo' ainda foi redimensionada para caber no ladrilho de 48x48 pixels. Se você não quiser nenhum redimensionamento, então defina apenas o espaçamento entre os ladrilhos. Alternativamente, use um tamanho especial como '1x1<', que diz ao IM para redimensionar apenas imagens menores para o tamanho dado. Como nenhuma imagem pode ser menor que 1 pixel, nenhuma imagem será redimensionada. O tamanho do ladrilho será assim novamente a maior dimensão de todas as imagens na página. Veja Geometria Zero, cuidado necessário para razões pelas quais você pode querer fazer isso.
Geometria - Espaçamento dos Ladrilhos
A parte posicional da configuração "[-geometry](https://imagemagick.org/command-line-options/#geometry)" adicionará espaço entre os 'ladrilhos' individuais, adicionando uma Borda dessas dimensões ao redor dos ladrilhos antes de Anexá-los juntos. Isso significa que, para a configuração padrão de "[-geometry](https://imagemagick.org/command-line-options/#geometry)", de '+4+3', os ladrilhos serão espaçados das bordas esquerda e direita da imagem final por 4 pixels, e terão um espaçamento de 8 pixels (o dobro do tamanho dado) horizontalmente entre os ladrilhos. O mesmo vale para o espaçamento vertical. Note como o espaço entre os ladrilhos, quando todas as imagens foram redimensionadas (penúltimo exemplo), é o dobro do tamanho do espaço ao redor das bordas.
Controles de Disposição dos Ladrilhos
A próxima opção mais importante no "magick montage" é a configuração "[-tile](https://imagemagick.org/command-line-options/#tile)". Ela diz à montagem quais limites você quer sobre como as imagens ladrilhadas devem ser dispostas no resultado final. Na versão 6 do ImageMagick, o "magick montage" fará um palpite fundamentado sobre a melhor forma de ladrilhar um determinado número de imagens, quando você não fornece dicas de "[-tile](https://imagemagick.org/command-line-options/#tile)". Ele, no entanto, assume que as imagens sendo ladrilhadas são de natureza aproximadamente quadrada, pois não examina as proporções das imagens ao decidir o ladrilhamento 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
| A estranha sintaxe "[1-5]" é uma abreviação do shell UNIX, que é expandida em uma lista de nomes de arquivos. O próprio comando "magick montage" não vê esses caracteres, apenas a lista resultante de arquivos.
---|---
O ImageMagick é muito bom em descobrir a configuração "[-tile](https://imagemagick.org/command-line-options/#tile)" correta a usar para um número específico de imagens de entrada. Aqui está uma tabela de número de imagens de entrada e a configuração de ladrilho que o IM usará para dispor essas imagens. | Núm. Imagens | Config. de Ladrilho
---|---
1 | 1x1
2 | 2x1
3 | 3x1
4 | 2x2
5 - 6 | 3x2
7 - 8 | 4x2
| | Núm. Imagens | Config. de Ladrilho
---|---
9 | 3x3
10 - 12 | 4x3
13 - 15 | 5x3
16 - 20 | 5x4
21 - 24 | 6x4
25 | 5x5
| | Núm. Imagens | Config. de Ladrilho
---|---
26 - 30 | 6x5
31 - 36 | 7x5
31 - 35 | 7x5
36 | 6x6
37 - 42 | 7x6
43 - 48 | 8x6
Note, no entanto, que o IM não selecionará automaticamente uma configuração de ladrilho de 'ajuste perfeito' 6x3 para 18 imagens, nem uma configuração 7x4 para 28 imagens. Porém, se você especificar uma configuração "[-tile](https://imagemagick.org/command-line-options/#tile)" específica, a montagem sempre criará uma imagem grande o suficiente para conter aquela quantidade de 'ladrilhos'.
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
| Como você pode ver, a montagem criou uma imagem grande o suficiente para conter o número de ladrilhos especificado, independentemente de quantas imagens estejam disponíveis para preencher o espaço de ladrilhos solicitado, sejam 7 imagens ou apenas 1 imagem. Ela apenas preencherá o espaço linha por linha, nenhuma opção é atualmente fornecida para fazer um preenchimento coluna por coluna do espaço de ladrilhos. | Antes do IM v6.1 a montagem truncava automaticamente o espaço extra se o número de imagens não usasse esse espaço. Assim, uma configuração como a primeira imagem "9x1" teria sido truncada para produzir uma imagem de ladrilho "7x1". Por causa disso, usuários antigos da montagem frequentemente usavam números grandes como "999x1" para gerar uma única linha de imagens. Agora tal argumento produzirá uma imagem muito longa, e pode levar muito tempo para o IM completar. Assim sendo... Evite o uso de números de ladrilho muito grandes na montagem do IM! |
|---|---|
Você pode evitar os problemas de espaço extra e múltiplas imagens, especialmente para um número desconhecido de imagens de entrada, removendo o número de linhas ou de colunas da configuração "[-tile](https://imagemagick.org/command-line-options/#tile)". O número faltante será tomado pela montagem como variável, e a montagem criará apenas espaço de ladrilho suficiente para conter TODAS as imagens de entrada, produzindo apenas uma imagem, nunca múltiplas imagens. |
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
Este é o uso mais típico da configuração "[-tile](https://imagemagick.org/command-line-options/#tile)", pois garante que a montagem seja dimensionada corretamente, ao mesmo tempo em que lhe permite algum controle ao determinar o tamanho final da matriz. Note a última imagem acima, onde solicitamos 9 colunas de imagens. O IM ainda gerou as 9 colunas solicitadas, mesmo que menos de 9 imagens tenham sido fornecidas. Por outro lado, a primeira imagem (uma linha solicitada) tem exatamente o comprimento certo para conter todas as imagens. Se você tiver mais imagens de entrada do que a montagem pode ladrilhar no espaço dado por uma configuração "[-tile](https://imagemagick.org/command-line-options/#tile)", então múltiplas imagens podem ser geradas pela montagem, resultando ou na adição de números de sequência de imagem ao nome do arquivo, ou em algum tipo de animação GIF sendo criada. Veja Escrevendo Múltiplas Imagens para detalhes. Por exemplo, aqui pedi à montagem que salvasse imagens separadas para cada página gerada, fornecendo um '%d' para o número de quadro/cena/página de cada nome de arquivo de imagem.
magick montage font_*.gif -tile 4x1 -geometry +2+2 multi_%d.gif
Decoração com Moldura
A melhor parte de usar a montagem para organizar imagens é que ela fornece muitos controles extras para adicionar 'enfeites' ao redor de cada imagem. Por exemplo, você pode definir melhor as imagens exibidas adicionando uma "[-frame](https://imagemagick.org/command-line-options/#frame)" ao redor de cada imagem.
magick montage balloon.gif medical.gif present.gif shading.gif \
-tile x1 -frame 5 -geometry +5+5 frame.jpg
Isto não é como a mesma opção no "magick" (Veja o exemplo Adicionando uma moldura 3D). A opção de moldura da montagem descobrirá automaticamente valores padrão para o bisel interno e externo da moldura. Assim, apenas um único número de argumento é necessário.
Decoração com Borda
Por volta do IM v6.1.0, "-border" tornou-se uma nova opção decorativa da montagem. Ela agora adiciona 'preenchimento' extra ao redor de cada imagem, depois que ela foi redimensionada de acordo com a configuração "-geometry".
magick montage balloon.gif medical.gif present.gif shading.gif \
-tile x1 -border 5 -geometry +5+5 border.jpg
| A decoração "-border" atualmente não funciona quando a Decoração com Moldura também é aplicada.
---|---
| Antes do IM v6.1.0 (aproximadamente) -border teria sido aplicada às imagens no ponto em que aparecia na linha de comando do "magick montage", exatamente como seria com o "magick".
Ou seja, a borda teria sido assim adicionada à imagem muito antes das imagens serem redimensionadas (de acordo com "-geometry"), o que resultava em larguras de borda diferentes ao redor de cada imagem dependendo do tamanho da imagem naquele ponto. Foi para remover essa inconsistência que -border tornou-se uma configuração especial da montagem.
---|---
Decoração com Sombra
Adicionar uma sombra com a moldura também é bem bom.
magick montage balloon.gif medical.gif present.gif shading.gif \
-tile x1 -frame 5 -shadow -geometry +5+5 frame_shadow.jpg
Claro que você não precisa realmente de uma moldura para gerar sombras de imagem
magick montage balloon.gif medical.gif present.gif shading.gif \
-tile x1 -shadow -geometry +5+5 -background lightblue \
shadow_noframe.jpg
A partir do IM v6.3.1, quando as 'sombras suaves' foram implementadas, as sombras agora serão moldadas de acordo com a transparência das imagens sendo exibidas! |
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
![[IM Output]](../static/img/montage/shadow_shaped.png)
Como você pode ver, a sombra usada pela montagem é na verdade uma cor semitransparente, permitindo que o fundo afete sua cor final. Isso significa que se você criar uma montagem com fundo texturizado, ou usar um fundo transparente e sobrepô-lo, a sombra fará a coisa certa. Claro que você precisa usar um formato de imagem que possa lidar com cores semitransparentes, como PNG. Lembre-se de que, por causa da Transparência Booleana do GIF, você não pode usar o formato de arquivo de imagem GIF para esse propósito. Note que as sombras não se importam com o espaçamento de "-geometry" entre as imagens. Assim, se as imagens estiverem muito próximas umas das outras, a sombra das imagens anteriores pode ser obscurecida pelas imagens posteriores. Por exemplo...
magick montage balloon.gif medical.gif present.gif shading.gif \
-tile x1 -shadow -geometry +1+1 -background none \
shadow_spacing.png
É, portanto, recomendado que uma quantidade razoável de espaçamento de "-geometry" seja fornecida ao usar sombra. Para evitar 'recorte de borda' demais nas sombras, a opção "-shadow" adicionará 4 pixels extras de espaçamento de borda às bordas direita e inferior da imagem final. Isso é além do espaçamento normal de "-geometry" fornecido. No entanto, como você pode ver acima, isso nem sempre é espaço suficiente. A montagem atualmente também não fornece controles para o deslocamento, cor ou a 'suavidade' da sombra gerada (pelo menos não ainda), mas então, você não tinha tal controle com a sombra retangular dura que era fornecida por versões mais antigas da montagem.
Rotulando as Imagens da Montagem
Você também pode dizer à montagem para rotular a imagem com seus nomes de arquivo de origem, embora você provavelmente precise redimensionar as molduras de imagem, ou os rótulos podem não caber, truncando o rótulo de texto. Neste caso, adicionamos um "60x60>" à string de geometria, que diz ao IM para encolher imagens maiores para caber neste espaço, mas não para ampliar imagens se forem menores. Este é provavelmente o uso mais típico da montagem.
magick montage -label '%f' balloon.gif medical.gif rose: present.gif shading.gif \
-tile x1 -frame 5 -geometry '60x60+4+4>' label_fname.jpg
O '%f' é um caractere de formato especial, que pode extrair vários detalhes sobre as imagens na memória. Veja Escapes de Propriedade de Imagem para detalhes de outras informações que você pode extrair das imagens. Você não precisa usar uma "[-frame](https://imagemagick.org/command-line-options/#frame)" ao rotular miniaturas. Os rótulos não recebem sombra, de modo que permaneçam claramente legíveis.
montage -label '%f' balloon.gif medical.gif logo: present.gif shading.gif \
-tile x1 -shadow -geometry '60x60+2+2>' label_shadow.jpg
E a partir do IM v 6.2.1 você pode agora re-rotular imagens depois de terem sido lidas usando o operador de atributo de imagem "[-set](https://imagemagick.org/command-line-options/#set)". Vamos usar o operador "[-set](https://imagemagick.org/command-line-options/#set)" para adicionar mais informações sobre as imagens. E também mais algumas configurações de montagem...
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
Como mostramos nos exemplos acima, você pode usar a configuração "[-label](https://imagemagick.org/command-line-options/#label)" para definir o rótulo padrão de uma imagem, conforme elas são lidas, ou você pode re-rotular a imagem depois usando o operador "[-set](https://imagemagick.org/command-line-options/#set)". |
Note que '%wx%h fornece a largura e altura atuais em pixels da imagem como ela está na memória. Se o tamanho da imagem foi modificado, como durante a entrada, isto pode ser diferente do tamanho das imagens em disco (ou na criação). Use '%[width]x%[height]' em vez disso, se você quiser o seu tamanho em pixels na memória. |
|---|---|
Você também pode rotular imagens de forma diferente definindo o rótulo de imagens individuais. Qualquer das opções pode ser usada, embora você precise usar parênteses para limitar a quais imagens o operador "[-set](https://imagemagick.org/command-line-options/#set)" será aplicado. Aqui, por exemplo, usamos ambas as formas de rotulagem. Mas vamos também adicionar um título à montagem, só 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
Você pode desativar a rotulagem de imagem para a(s) próxima(s) imagem(ns) usando um "-label '' " ou "+label". No entanto, como você verá mais adiante, essas duas configurações não são exatamente iguais. O mesmo se aplica a uma operação de rótulo "[-set](https://imagemagick.org/command-line-options/#set)" pós-leitura.
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
A última imagem mostra como, usando um espaço para um rótulo de imagem, você pode criar um espaço de rótulo de imagem, mas deixá-lo em branco. Isto apresenta uma boa regra geral ao usar a montagem...
Ou rotule todas as suas imagens, ou nenhuma delas!
Você não precisa rotular suas imagens durante a própria operação de montagem. Tanto o formato MIFF quanto o PNG podem armazenar um rótulo como parte de seu formato de imagem. A montagem rotulará automaticamente qualquer imagem lida que já contenha um rótulo. Isto é automático e não precisa ser especificado, e eu usei esta técnica para gerar algumas montagens de imagem bem complexas. Por exemplo, a matriz de montagem em Exemplos de Ângulo de Anotação foi criada usando esta técnica. Se você não quiser essa rotulagem automática, você deve dizer especificamente à montagem para redefinir todos os rótulos sendo lidos ou criados para a string vazia, usando "-label ''" antes de ler a imagem. Ou você pode simplesmente excluir os metadados de rótulo usando "+set label" depois de ler as imagens. É aqui que "[+label](https://imagemagick.org/command-line-options/#label)" difere de usar um rótulo vazio ("-label ''"). O primeiro redefinirá o comportamento padrão de volta a usar automaticamente quaisquer metadados de rótulo que a imagem sendo lida possa ter, enquanto o último substitui o rótulo por uma string vazia, o que efetivamente remove o rótulo. Você também pode preservar o rótulo original da imagem usando "-label '%l'", o que pode ser útil como uma opção de rotulagem NO-OP em scripts de processamento de imagem. Note que "[-set](https://imagemagick.org/command-line-options/#set)" não pode restaurar o rótulo original de uma imagem, uma vez que ele foi modificado ou removido, seja usando "[-label](https://imagemagick.org/command-line-options/#label)" ou "[-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
No exemplo acima você pode ver que a primeira imagem foi rotulada usando o rótulo fornecido com a própria imagem. A segunda teve o rótulo de entrada removido por uma configuração "-label '' ", enquanto a terceira também usou o rótulo da imagem porque desativamos a configuração de rótulo com "[+label](https://imagemagick.org/command-line-options/#label)".
Usando MetaDados Salvos da Imagem
Ao gerar imagens para uso posterior pela montagem, é importante saber que tipo de metadados de imagem um formato de arquivo de imagem específico pode salvar. Por exemplo, apenas os formatos de arquivo de imagem PNG e MIFF podem realmente armazenar metadados de 'label' em seu formato de arquivo de imagem salvo...
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.*
No entanto, todos os formatos de arquivo comuns permitem que você use metadados de 'comment', que você pode usar especificando um 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.*
Isto é frequentemente mais útil para fotos salvas no formato de arquivo JPEG, embora os comentários de imagem JPEG geralmente sejam muito grandes (frequentemente parágrafos inteiros descrevendo a imagem), para uso como rótulos de montagem, pois não serão quebrados por palavra (veja Montagem de Fotos Polaroid para um método alternativo de rotulagem usando metadados de 'comment' de imagem). Muitos outros programas também adicionam automaticamente rótulos e comentários de 'feito-por' às imagens que salvam (ECA), então algum cuidado é recomendado. O programa GIMP particularmente gosta de adicionar tais comentários e rótulos, a menos que você diga para não fazê-lo, toda vez que você salva uma imagem. Note que o IM geralmente não é usado para adicionar comentários a arquivos JPEG salvos (devido à Compressão com Perdas do JPEG), a menos que esteja processando-os por outras razões. Em vez disso, eles geralmente são adicionados por algum outro método a fim de evitar ler e reescrever os dados da imagem e, com isso, degradar os arquivos de imagem JPEG nos quais você está adicionando comentários. Veja as opções de Processamento JPEG sem perdas, para alguns desses métodos. Também é importante notar que a rotulagem (e os 'comentários' de imagem) não é específica da montagem. A montagem apenas faz uso automático de rótulos de imagem, se presentes. Rótulos e comentários são anexados às imagens, e aos seus formatos de arquivo específicos, e não é algo específico da montagem ou mesmo do IM. Os formatos de arquivo PNG e MIFF também permitem que você use os metadados de 'caption', menos comumente usados.
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.*
Na verdade, ambos esses formatos de arquivo permitem que você salve QUALQUER Metadado de propriedade de imagem que possa estar presente em uma imagem quando ela é salva!
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.*
Deixando Lacunas em uma Montagem
Embora você possa deixar espaço extra em uma montagem na parte inferior pelo uso criterioso da configuração "[-tile](https://imagemagick.org/command-line-options/#tile)" e controlando o número de imagens fornecidas, deixar um espaço de ladrilho vazio no meio de uma montagem requer o uso de uma imagem especial. A imagem gerada "null:" foi definida especificamente para este propósito. A posição em que ela aparece não receberá nenhum rótulo (mesmo que um esteja definido), nem terá qualquer 'enfeite' de moldura ou sombra adicionado. O ladrilho é deixado completamente vazio, exceto pela cor de fundo (ou textura) da própria tela de desenho da montagem.
magick montage -label 'Image' medical.gif null: present.gif \
-tile x1 -frame 5 -geometry +2+2 montage_null.jpg
Note que, para outros comandos do IM, a imagem "null:" é representada como uma imagem transparente de um único pixel. Ela também é usada como uma 'imagem de erro' para opções como "[-crop](https://imagemagick.org/command-line-options/#crop)" ou "[-trim](https://imagemagick.org/command-line-options/#trim)", que poderiam produzir uma imagem 'zero' ou vazia como resultado da operação. Esta imagem especial não pode ser salva e depois usada para deixar lacunas; atualmente ela é apenas 'especial' se fornecida na linha de comando do "magick montage". | _Não há método, no momento, para permitir que imagens montadas se estendam por múltiplas linhas ou colunas, como você pode em tabelas HTML. Nem você pode gerar linhas e colunas de tamanho variável para melhor ajustar a matriz de imagens sendo gerada.
Se você realmente precisar desse tipo de capacidade, você precisará desenvolver seu próprio tipo de aplicação de montagem. Se você desenvolver algo, então por favor contribua, e veremos sobre mesclá-lo na aplicação de montagem existente.
Algumas soluções para isto incluem rotular e emoldurar as miniaturas de imagem você mesmo e então usar ou Anexar Imagens ou usar uma técnica mais livre de Imagem em Camadas.
_
---|---
Mais Configurações de Montagem As configurações do "magick montage" que mostrei acima são apenas os controles básicos da montagem. Existem muitas outras configurações que você pode querer considerar para suas próprias necessidades. Configurações de Cor da Montagem [**-background**](https://imagemagick.org/command-line-options/#background) |
A cor fora da moldura desenhada. Frequentemente isto é definido como 'none' ou 'transparent', para uso em páginas web. A configuração -texture será usada em vez disso, se fornecida. |
|---|---|
[**-bordercolor**](https://imagemagick.org/command-line-options/#bordercolor) |
A cor de preenchimento dentro da moldura para imagens, ou qualquer preenchimento de borda. Quaisquer áreas transparentes em uma imagem se tornarão esta cor, a menos que nenhuma dessas decorações seja adicionada. |
[**-mattecolor**](https://imagemagick.org/command-line-options/#mattecolor) |
A cor usada como a cor da moldura. Note que a cor também é tornada mais clara e mais escura para dar à moldura uma aparência 3D em relevo. Então esta configuração realmente define 5 cores. (Veja também Emoldurando Imagens) |
[**-fill**](https://imagemagick.org/command-line-options/#fill) |
A cor de preenchimento para rótulos de texto e títulos. |
[**-stroke**](https://imagemagick.org/command-line-options/#stroke) |
A cor de traço para rótulos de texto e títulos. |
| Configurações de Controle da Montagem |
[**-tile**](https://imagemagick.org/command-line-options/#tile) {_cols_}x{_rows_}O número de imagens na horizontal e na vertical usadas para preencher uma única imagem de montagem. Se mais imagens forem lidas ou criadas do que cabe em uma única imagem de montagem, então múltiplas imagens serão criadas. (Veja Controles de Ladrilho acima)[**-title**](https://imagemagick.org/command-line-options/#title) {_string_}Define um título sobre toda a montagem, usando a mesma fonte (mas maior) que a usada para rotular as imagens individuais.[**-frame**](https://imagemagick.org/command-line-options/#frame) {_width_}Cria uma moldura ao redor da caixa que contém a imagem, usando a width (largura) fornecida (deve ser pelo menos 2, mas 5 ou 6 é um bom valor). Se usada, qualquer transparência nas imagens também se tornará a cor da borda.[**-border**](https://imagemagick.org/command-line-options/#frame) {_width_}Cria uma borda ao redor da imagem, usando a width (largura) fornecida. Se usada, qualquer transparência nas imagens também se tornará a cor da borda.[**-shadow**](https://imagemagick.org/command-line-options/#shadow)Gera uma sombra da moldura. Note que nenhum argumento é exigido ou esperado.[**-texture**](https://imagemagick.org/command-line-options/#texture) {_filename_}Usa a textura dada (imagem ladrilhada) para o fundo em vez de uma cor específica. Veja a seção sobre Fundo e Transparência abaixo para mais informações.[**-geometry**](https://imagemagick.org/command-line-options/#geometry) {_W_}x{_H_}+{_X_}+{_Y_}Redimensiona as imagens depois que todas foram lidas, antes que a montagem as sobreponha em sua tela. Também define o tamanho e o espaçamento entre os ladrilhos nos quais as imagens são desenhadas. Se nenhum tamanho for especificado, as imagens não serão redimensionadas.[**-gravity**](https://imagemagick.org/command-line-options/#gravity) {_direction_}se a imagem for menor que a moldura, onde na moldura a imagem deve ser colocada. Por padrão é centralizada.
Adicionadas às acima estão todas as configurações de fonte que o operador de criação de imagem "label:" entende (Veja Gerador de Imagem de Rótulo). Estas configurações são usadas para a criação dos rótulos adicionados sob a imagem exibida. Estas incluem configurações como "[-font](https://imagemagick.org/command-line-options/#font)", "[-pointsize](https://imagemagick.org/command-line-options/#pointsize)" (ignorada 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)", e "[-strokewidth](https://imagemagick.org/command-line-options/#strokewidth)". Desde que qualquer uma ou todas as configurações acima sejam definidas ou redefinidas antes do argumento final do 'nome do arquivo de saída', a montagem as usará conforme você solicitou. Reutilizando Configurações para Leitura/Criação de Imagens Note, no entanto, que muitas dessas opções também são usadas para outros propósitos, seja na geração de imagens ou durante o processamento de imagens. Mas graças ao tratamento de linha de comando 'faça as coisas conforme você as vê' no IM v6, isto não apresenta nenhum problema para o comando "magick montage". Isso significa que você está livre para usar qualquer uma dessas configurações de opção para ler, criar ou modificar as imagens sendo lidas, e então redefinir essas configurações depois que todas as imagens tiverem sido lidas ou criadas. O valor final da configuração será o que a montagem usará para seu processamento final. Este não era o caso em versões do IM anteriores à versão 6, nas quais geralmente era impossível separar as configurações de criação de imagem das configurações de montagem, sem gerar imagens intermediárias (como no exemplo de Rótulos de Imagem acima). Aqui está um exemplo prático de reutilização de configuração. Eu queria fazer uma tabela de algumas das fontes que tenho usado nestas páginas de exemplo, e então redefinir as configurações para outros valores para o processamento final das imagens pela montagem.
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
![[IM Output]](../static/img/montage/montage_fonts.gif)
Note os dois estágios do comando "magick montage". Que eu marquei claramente usando uma linha extra quase vazia. A primeira parte é essencialmente exatamente como você definiria múltiplas imagens usando o comando normal "magick" do IM, e é processada na mesma ordem 'faça conforme você vê'. A segunda parte define todas as configurações que eu queria que o próprio comando "magick montage" usasse. Ou seja, o emolduramento, o redimensionamento de imagem, as fontes e cores que eu queria usar na imagem de montagem final. Eu tenho um cuidado especial em redefinir as configurações "[-font](https://imagemagick.org/command-line-options/#font)" e "[-pointsize](https://imagemagick.org/command-line-options/#pointsize)" para a rotulagem sob as imagens montadas. Embora você possa separar as opções do "magick montage" assim, você pode na verdade definir as configurações da montagem a qualquer momento na linha de comando. Desde que essas configurações não interfiram com suas opções de criação e processamento de imagem, e ainda estejam definidas corretamente quando o final da linha de comando for alcançado, o "magick montage" as usará. À PARTE: Você pode querer dar uma olhada no script de shell que escrevi para fazer algo similar ao acima (e que funciona com versões anteriores da montagem) para exibir um diretório de fontes truetype (.ttf), chamado "[**show_fonts**](../static/img/scripts/show_fonts)". Outro exemplo de script de shell é "[**show_colors**](../static/img/scripts/show_colors)".
Diferenças de Opções entre Montage e Magick
Agora, embora o "magick montage" geralmente permita que você use quaisquer configurações e operadores do "magick" na leitura e processamento de suas imagens de entrada, há algumas diferenças que precisam ser destacadas. Estes operadores e configurações do "magick" são diferentes quando usados dentro do "magick montage".
[**-tile**](https://imagemagick.org/command-line-options/#tile)No "magick" a configuração "[-tile](https://imagemagick.org/command-line-options/#tile)" define uma imagem a usar como textura em vez de usar a cor "[-fill](https://imagemagick.org/command-line-options/#fill)". No "magick montage" ela define como dispor os 'ladrilhos' de célula de imagem individual. Veja Controles de Disposição dos Ladrilhos acima para mais detalhes.[**-frame**](https://imagemagick.org/command-line-options/#frame)No "magick" este é um operador usado para adicionar uma borda de moldura 3D ao redor das imagens, e requer 4 argumentos para funcionar corretamente (Veja os exemplos de Moldura no Convert). Veja Decoração com Moldura para mais detalhes.[**-border**](https://imagemagick.org/command-line-options/#border)Por volta do IM v6.1.0 este operador tornou-se uma opção especial de montagem. Assim, como a opção de moldura anterior, ele recebe apenas um número como argumento, em vez de dois argumentos como na Borda no Convert. Veja Decoração com Borda para mais detalhes.[**-shadow**](https://imagemagick.org/command-line-options/#shadow)A opção "[-shadow](https://imagemagick.org/command-line-options/#shadow)" no "magick" recebe um argumento que é usado para criar uma sombra suave e desfocada que pode ser colocada sob uma segunda cópia da imagem original. No entanto, no "magick montage" esta é apenas uma configuração booleana que apenas liga e desliga as habilidades de sombra retangular. Veja Decoração com Sombra para mais detalhes.[**-geometry**](https://imagemagick.org/command-line-options/#geometry)A opção "[-geometry](https://imagemagick.org/command-line-options/#geometry)" no "magick montage" é simplesmente salva para fornecer o tamanho das imagens dentro de cada célula da montagem final, e o espaçamento entre as células. No "magick" ela redimensiona apenas a última imagem, e define o deslocamento para a Composição de Imagem.
Se você realmente precisar usar a forma "magick" dessas opções, então você precisará pré-processar suas imagens usando "magick" antes de passá-las para o "magick montage". Um método usando arquivos intermediários foi demonstrado no exemplo de Rótulos de Imagem acima. Outro é simplesmente fazer seu processamento no "magick" e apenas canalizar as múltiplas imagens resultantes para o "magick montage". Esta separação é fácil de fazer se você sempre fizer seu tratamento de entrada de imagem primeiro, e então definir as configurações específicas do "magick montage" depois, como fiz em todos esses exemplos. Isto é especialmente mostrado no último exemplo de fontes acima. Por exemplo, vamos emoldurar nossas imagens usando a moldura do "magick", e então emoldurá-las novamente usando as molduras rotuladas do "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
Você também pode ver os argumentos extras exigidos pela forma "magick" do operador "[-frame](https://imagemagick.org/command-line-options/#frame)".
Índices de Diretórios de Imagens
Mapas de Imagem de Miniaturas em HTML
A montagem é especialmente projetada para gerar mapas de miniaturas de imagens. Por exemplo, aqui criei um índice do diretório de origem das Imagens de Foto, que contém as fotos digitais usadas nos exemplos ao longo dos Exemplos do IM. Clique na imagem 'art' abaixo para ver o 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
IM Examples
Photo Store
| Note o uso de '%[width]x%[height]' em vez de apenas '%wx%h'. Isto é importante, pois a imagem está sendo redimensionada conforme é lida. O primeiro rotulará as imagens com seu tamanho original em pixels como está no disco, enquanto o último usará o tamanho redimensionado atual da imagem. Isto é algo que é facilmente negligenciado pelos usuários.
---|---
O resultado deste comando foram três arquivos...
[photo_index.png](../static/img/montage/photo_index.png)A montagem de todas as miniaturas das imagens [photo_index_map.shtml](../static/img/montage/photo_index_map.shtml.txt)Um 'mapa de imagem' HTML para a imagem de miniaturas [photo_index.html](../static/img/montage/photo_index.html.txt)A página de índice de miniaturas HTML para a World Wide Web. Isto também inclui uma cópia do mapa de imagem anterior.
Claro que você não precisa gerar um arquivo de índice HTML se você quiser apenas uma imagem de índice. Nesse caso, apenas substitua "photo_index.html" no comando acima pela imagem que você quer gerar. Note o uso do Escape de Propriedade de Imagem '%t' para o "[-label](https://imagemagick.org/command-line-options/#label)" da imagem. Este é o nome do arquivo da imagem sem nenhum componente de 'caminho'. Embora o link HTML ainda contenha os componentes de 'caminho' apropriados, permitindo que você construa a imagem de índice em um diretório diferente das próprias imagens. As imagens de origem "'*_orig.*'" nos exemplos acima estão entre aspas, de modo que o comando "magick montage" faça a expansão do '*' ele mesmo, e não o shell da linha de comando. Isto evita quaisquer limites de comprimento da linha de comando com os quais você possa ter problemas. Também faço algum redimensionamento inicial das imagens '[120x190]' conforme as leio (veja Modificadores de Leitura de Imagem). Para imagens JPEG, também especifiquei uma configuração "[-size](https://imagemagick.org/command-line-options/#size)" menor, para que a biblioteca JPEG possa fazer algum escalonamento inicial bem grosseiro, e não ler a imagem inteira na memória. Se isto não for feito, então imagens JPEG muito grandes poderiam usar uma enorme quantidade de memória e ciclos de CPU quando não há real necessidade. Também faço "[-strip](https://imagemagick.org/command-line-options/#strip)" de quaisquer perfis que as imagens possam ter. Para mais informações, veja Perfis, Remoção e Tratamento de JPEG e Lendo Imagens JPEG. Lembre-se de que a opção "[-geometry](https://imagemagick.org/command-line-options/#geometry)" da montagem também pode especificar uma configuração de redimensionamento final, embora neste caso ela não seja necessária, pois fiz isso durante o processo de leitura, então não defini nenhum 'tamanho' naquela configuração. Finalmente, a opção "[-tile](https://imagemagick.org/command-line-options/#tile)" de '5x' é usada para garantir que todas as imagens apareçam em uma única imagem, caso contrário, o "magick montage poderia gerar arquivos HTML de múltiplas páginas, que não são corretamente vinculados entre si. Espera-se que isto mude, embora a geração de HTML não seja um objetivo primário do ImageMagick. Para outras formas de gerar miniaturas e páginas de índice HTML, leia a Página de Exemplos de Miniaturas.
Mapas de Índice HTML Menores, usando imagens JPEG
A imagem de índice acima gerou uma imagem de índice em formato PNG. Isto foi usado porque é um formato sem perdas, o que pode ser importante quando as imagens sendo indexadas são de cores muito diferentes. Também permite o uso do novo recurso de 'sombras suaves' da montagem se a cor de fundo for definida como 'transparent' ou 'none'. IM's muito muito antigos teriam gerado uma imagem GIF para o acima. No entanto, isto tem uma forte redução de cor nos resultados como parte das limitações do formato. Também não permitia o uso de 'sombras suaves' semitransparentes como o PNG permite. O JPEG também não permite semitransparência, mas isso não é um problema se você não usar um fundo transparente para a imagem. Ele é, no entanto, muito menor que o PNG, o que fornece uma forma de reduzir drasticamente o tamanho da imagem de índice, especialmente para uso na web, e ainda lidar com uma grande gama de cores. No entanto, a saída HTML acima gera apenas imagens em formato PNG, então você precisará não apenas converter o PNG para JPEG, mas também fazer algum processamento extra para corrigir o arquivo 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
IM Examples
Photo Store
Os comandos acima são bem complicados, então aqui está o que acontece...
- Primeiro eu gero um índice HTML de miniaturas de montagem, como fiz anteriormente. Isto gerou os arquivos: "
photo_jpeg.html" e "photo_jpeg.png" - Eu então converti a imagem PNG em uma imagem JPEG menor e com perdas.
- Depois usei um pequeno script de uma linha em '
perl' para alterar o arquivo HTML para usar a imagem JPEG em vez do PNG. - E finalmente removi a imagem PNG, bem como o arquivo de mapa SHTML do qual não preciso.
E pronto, temos um índice de Miniaturas usando uma imagem JPEG bem pequena para a imagem de índice de miniaturas. Aqui estão comparações dos tamanhos de arquivo da imagem de índice de miniaturas...
Ou seja, a imagem usada para o índice é apenas cerca de 15% do tamanho da imagem PNG original. Uma grande economia para uma página web de miniaturas baixável! Você pode tornar a imagem JPEG ainda menor usando uma configuração "[-quality](https://imagemagick.org/command-line-options/#quality)" menor, embora a configuração padrão produza um resultado bem razoável. Outras opções possíveis incluem usar "[-sampling-factor](https://imagemagick.org/command-line-options/#sampling-factor) 2x1" para torná-la ainda menor.
Imagens de Índice Visual (uma solução sem montage)
Uma alternativa ao uso da montagem é usar um formato de entrada especial de "índice visual"... |
magick 'vid:../img_photos/*_orig.*' vid_index.gif
Visual Index of
Photo Store
E também pode gerar arquivos de índice HTML 'clicáveis'. |
magick 'vid:../img_photos/*_orig.*' vid_index.html
Visual HTML of
Photo Store
É óbvio que o "VID:" usa a montagem internamente para gerar a matriz de índice. No entanto, você não tem os mesmos controles que teria se tivesse usado a montagem diretamente. Note que um índice VID HTML cria uma imagem de miniatura em formato PNG.
Uma Montagem de Fotos Polaroid
Com o advento de uma Transformação Polaroid Complexa agora é possível gerar um estilo bem diferente de montagem, e de indexação por montagem. |
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
Polaroid
Montage
Note que, como usei "[+polaroid](https://imagemagick.org/command-line-options/#polaroid)" para emoldurar e rotular as imagens, precisei redimensionar a imagem eu mesmo (usando "[-thumbnail](https://imagemagick.org/command-line-options/#thumbnail)"), e garantir que o "[-background](https://imagemagick.org/command-line-options/#background)" e o "[-label](https://imagemagick.org/command-line-options/#label)" da imagem tivessem sido redefinidos antes de realmente criar a matriz de índice do "magick montage". A Transformação Polaroid, no entanto, tende a borrar o texto durante a adição do 'enrolamento' à imagem de miniatura. No entanto, você pode melhorar o resultado geral gerando as imagens polaroid em um tamanho maior e depois encolhendo o resultado em 50%. A única desvantagem é o efeito de 'sombra' reduzido. |
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
Sharper
Polaroid
Montage
Esta montagem sofisticada, bem como outras técnicas mostradas acima, foi usada para criar um script para gerar um índice de miniaturas de montagem no diretório real "[photo_store](img_photos.html)". Veja Índice da Loja de Fotografias para os resultados deste script.
Técnicas Especiais usando Montagem
Montagem em Colunas
Por padrão, o "magick montage" só pode colocar as imagens na ordem fornecida (tipicamente ordem ordenada) linha por linha. No entanto, às vezes você gostaria de tê-las mostradas em ordem de colunas. Isto não pode ser feito com um único comando, mas requer um pipeline de pelo menos dois comandos. Por exemplo, aqui gero uma página de ladrilhos 5x3, usando duas montagens. |
magick montage font_*.gif -tile 1x3 -geometry 16x16+1+1 miff:- |\
magick montage - -geometry +0+0 -tile 5x1 montage_columns.gif
![[IM Output]](../static/img/montage/montage_columns.gif)
Note que é o primeiro "magick montage" que cria os ladrilhos e realiza qualquer dimensionamento de ladrilho por geometria, emolduramento, rotulagem e espaçamento necessário. Ele então gerará uma imagem para cada coluna de ladrilhos. O segundo "magick montage" então simplesmente concatena as colunas em imagens de 'página' sem adicionar mais espaço entre as colunas. Se você quiser apenas uma única imagem de um número variável de colunas, então você pode substituir o segundo "magick montage" por um "magick" para concatenar sem adicionar espaço extra de 'páginas'. Por exemplo... |
magick montage font_*.gif -tile 1x3 -geometry 16x16+1+1 miff:- |\
magick - +append montage_columns_2.gif
Ladrilhos de Montagem Sobrepostos
No Fórum de Usuários do IM, durante uma discussão entre Fred Weinhaus, também conhecido como fmw42 e outro usuário pooco, descobriu-se que se você definir o espaço entre ladrilhos (definido na configuração "[-geometry](https://imagemagick.org/command-line-options/#geometry)") para um número negativo, você pode de fato sobrepor as áreas ladrilhadas nas quais as imagens são desenhadas. Por exemplo, aqui usamos um espaçamento horizontal negativo entre ladrilhos, para uma única linha de imagens.
magick montage null: font_*.gif null: \
-tile x1 -geometry -5+2 montage_overlap.jpg
Rotacionar as imagens tornará a série sobreposta ainda mais interessante...
magick montage null: font_*.gif null: -background none -rotate 30 \
-background white -tile x1 -geometry -8+2 montage_rot_overlap.jpg
Note que precisei adicionar uma imagem especial "null:" de espaçamento no início e no fim da linha de imagens, de modo que as imagens não transbordem da tela que o "magick montage" calcula e gera. Isto nos apresenta algumas possibilidades interessantes. Por exemplo, você poderia gerar uma linha bem interessante de miniaturas sobrepostas, fazendo uso da Transformação Polaroid rotacionada 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
O uso de extent acima é usado para remover a aleatoriedade do tamanho da imagem que "[+polaroid](https://imagemagick.org/command-line-options/#+polaroid)" pode produzir em diferentes 'execuções', dando mais controle sobre o espaçamento final e a sobreposição entre as imagens. Este é um resultado muito interessante, embora deva na verdade ser classificado como um BUG, pois este não é o propósito pretendido do "magick montage". Eu também não esperaria que qualquer mapeamento de imagem HTML funcionasse corretamente, sem alguma correção pelo usuário. No entanto, uma solução mais complexa e controlável pelo usuário para imagens sobrepostas é demonstrada usando uma forma com scripts de Mesclagem de Camadas, que é a solução recomendada e mais lógica. Veja exemplos em Posicionamento Programado de Imagens em Camadas.
Modo de Concatenação da Montagem
Como você viu, a montagem tem um modo de concatenação especial, que pode ser usado para juntar imagens sem nenhum espaço extra, exatamente como a opção "[-append](https://imagemagick.org/command-line-options/#append)". No entanto, recomendo que você defina a opção "[-tile](https://imagemagick.org/command-line-options/#tile)" apropriadamente, de modo a direcionar a anexação horizontalmente, verticalmente ou em uma matriz. Por exemplo, aqui usamos um "-tile x1" para anexar imagens horizontalmente.
magick montage balloon.gif medical.gif present.gif shading.gif \
-mode Concatenate -tile x1 montage_cat.jpg
Mas você também pode usá-lo para criar com a mesma facilidade uma matriz de imagens. De preferência, as imagens são do mesmo tamanho, para que se encaixem corretamente.
magick montage balloon.gif medical.gif present.gif shading.gif \
-mode Concatenate -tile 2x2 montage_array.jpg
Ao concatenar imagens de tamanhos diferentes, as imagens são concatenadas com alinhamento vertical 'superior', e depois alinhamento de linha horizontal 'à esquerda'.
magick montage medical.gif rose: present.gif shading.gif \
granite: balloon.gif netscape: recycle.gif \
-mode Concatenate -tile 4x montage_cat2.jpg
No entanto, o alinhamento vertical fica estranho quando o emolduramento também é adicionado.
magick montage medical.gif rose: present.gif shading.gif \
granite: balloon.gif netscape: recycle.gif \
-mode Concatenate -tile 4x -frame 5 montage_cat3.jpg
Geometria Zero, cuidado necessário
Apenas com valores de espaçamento de "[-geometry](https://imagemagick.org/command-line-options/#geometry)" (sem redimensionamento de imagem especificado), todas as molduras de imagem da montagem são definidas para o mesmo tamanho, de modo que tanto a imagem mais larga quanto a mais alta caibam, sem serem redimensionadas. Este é em si um comportamento útil...
magick montage present.gif rose: shading.gif \
-frame 5 -geometry +1+1 montage_geom_1.jpg
No entanto, uma lacuna de 1 pixel foi deixada ao redor e entre as molduras de imagem. Mas se você tentar remover essas lacunas com uma posição de "+0+0", você se depara com um problema bem incomum...
magick montage present.gif rose: shading.gif \
-tile x1 -frame 5 -geometry +0+0 montage_geom_0.jpg
A 'geometria zero' que você especificou (ou seja, "-geometry 0x0+0+0"), tem o efeito extra de colocar a montagem em um modo de 'concatenação' (veja acima), o que NÃO é o que buscávamos no exemplo acima. Para imagens individuais, também não importa se usamos um "[-append](https://imagemagick.org/command-line-options/#append)" zero (e, portanto, o modo de concatenação). O resultado desejado é o que queremos, sem bordas extras. Assim, um "-geometry +0+0" é adequado se você estiver usando o "magick montage" apenas para adicionar um rótulo a uma imagem. O modo de concatenação, no entanto, não será invocado se você especificar um 'tamanho' de geometria não-zero para suas imagens, mesmo que você tenha usado um deslocamento zero. Isto, por sua vez, nos dá uma solução engenhosa para o nosso problema original. O que fazemos é definir um tamanho de imagem de geometria de "1x1", mas também dizer ao IM para nunca encolher imagens (usando um caractere "<") para este tamanho! Em outras palavras, nunca redimensionar uma imagem, jamais, apenas usar um deslocamento zero, em um argumento de geometria não-zero.
magick montage present.gif rose: shading.gif \
-frame 5 -geometry '1x1+0+0<' montage_geom_1x1.jpg
Isto traz outra boa regra geral...
Sempre defina uma geometria não-zero ao usar a montagem
Mesmo que seja apenas a geometria 'falsa' como a que usei acima.
Tratamento de Fundo e Transparência
Por padrão, as imagens são sobrepostas na tela da montagem, que é criada usando a configuração de cor "[-background](https://imagemagick.org/command-line-options/#background)", como você pode ver aqui. |
magick montage font_9.gif \( recycle.gif -set label recycle \) medical.gif \
-tile x1 -geometry +5+5 -background lightblue bg_lightblue.gif
![[IM Output]](../static/img/montage/bg_lightblue.gif)
Em vez de uma cor sólida, você pode usar "[-texture](https://imagemagick.org/command-line-options/#texture)" para definir uma imagem de ladrilho a usar em vez da cor "[-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
![[IM Output]](../static/img/montage/bg_texture.gif)
Adicionar molduras (que adicionam espaço de borda extra nos ladrilhos) apenas adiciona mais 'enfeites' desenhados sobre a tela de fundo. |
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
![[IM Output]](../static/img/montage/bg_frame.gif)
Note que, quando emoldurada, a configuração "[-bordercolor](https://imagemagick.org/command-line-options/#bordercolor)" será usada para preencher o interior da moldura, tornando-se efetivamente a cor de fundo da imagem. Note também que quaisquer áreas transparentes da imagem também são definidas para esta cor. | _Antes da versão 6.1.4 do IM, o que era visto nas áreas transparentes das imagens era indefinido. Em algumas versões você veria através da imagem emoldurada até a cor ou textura de fundo. Em outras, você poderia obter preto ou branco. Em ainda outras versões você seria capaz de ver através de todas as camadas e a imagem final seria transparente onde a imagem original era transparente. Atualize AGORA se isto for um problema para você.
_
---|---
Também novo na versão 6.1.4 do IM é a habilidade de usar uma moldura especial de 1 pixel de largura. Isto basicamente removerá a moldura ao redor das células de imagem completamente, mas mantendo o preenchimento interno de "[-bordercolor](https://imagemagick.org/command-line-options/#bordercolor)" ao redor (e sob) a imagem. Por exemplo, compare uma moldura de '1' com a largura mínima de moldura 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
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
![[IM Output]](../static/img/montage/bg_frame_2.gif)
Mas e se você quiser que sua montagem tenha um fundo transparente? Particularmente, se você planeja usá-la em uma página web contendo um mapeamento de textura. Simples, apenas use uma cor de "[-background](https://imagemagick.org/command-line-options/#background)" de 'None' ou 'Transparent', sem nenhuma imagem de "[-texture](https://imagemagick.org/command-line-options/#texture)" para sobrescrever essa configuração. Por exemplo, aqui geramos uma montagem transparente. Note que "[-geometry](https://imagemagick.org/command-line-options/#geometry)" ainda é usada para adicionar espaço ao redor e entre as imagens. |
magick montage font_9.gif recycle.gif medical.gif \
-tile x1 -geometry +2+2 -background none bg_none.gif
![[IM Output]](../static/img/montage/bg_none.gif)
Claro que se você também usar "[-frame](https://imagemagick.org/command-line-options/#frame)", você precisa tornar o "[-bordercolor](https://imagemagick.org/command-line-options/#bordercolor)" transparente também. |
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
![[IM Output]](../static/img/montage/bg_framed_trans.gif)
Note que a opção "-shadow" da montagem é completamente não afetada por tudo o que foi dito acima. Ela é aplicada de acordo com a forma transparente final das células, antes de ser sobreposta na cor ou textura de fundo. |
magick montage font_9.gif recycle.gif medical.gif \
-tile x1 -shadow -geometry '40x40+5+5>' \
-texture bg.gif bg_shadow.gif
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
Quaisquer sugestões, ideias ou outros exemplos de uso do "magick montage" são, claro, sempre bem-vindos. O mesmo vale para qualquer coisa nestas páginas de exemplo.
Montage Image Output Size
The mathematics of montage is straight forward...
Basically the montage width should be....
(geometry_size + 2*frame_size + 2*geometry_offset) * images_per_column
That is, each 'cell' of montage has a fixed sized frame and spacing (border)
added around it before the cells are appended together.
In essence the size of montage is also a multiple of the tile size, which can
make it easy to break up montage, or re-arrange the 'cells', if so desired,
as they are simple fixed sized tiles in a rectangular array.
The height is similar but with tha additional spacing needed for labels and
the optional montage title, both of which are much more difficult to
calculate, as they depend heavilly on text, font, pointsize, and density
settings.
There is also an effect of adding a shadow to the montage in this calculation,
but that appears to be a simple small fixed addition to the bototm and right
edges. It does not appear to effect the tile size used.
![[IM Output]](../static/img/montage/montage.jpg)
![[IM Output]](../static/img/montage/montage_geom.jpg)
![[IM Output]](../static/img/montage/montage_geom_size.jpg)
![[IM Output]](../static/img/montage/montage_geom_larger.jpg)
![[IM Output]](../static/img/montage/tile_1.gif)
![[IM Output]](../static/img/montage/tile_2.gif)
![[IM Output]](../static/img/montage/tile_3.gif)
![[IM Output]](../static/img/montage/tile_4.gif)
![[IM Output]](../static/img/montage/tile_5.gif)
![[IM Output]](../static/img/montage/tile_6.gif)
![[IM Output]](../static/img/montage/tile_7.gif)
![[IM Output]](../static/img/montage/tile_8.gif)
![[IM Output]](../static/img/montage/tile_9.gif)
![[IM Output]](../static/img/montage/tile_0.gif)
![[IM Output]](../static/img/montage/tile_9x1.gif)
![[IM Output]](../static/img/montage/tile_4x3.gif)
![[IM Output]](../static/img/montage/tile_3x3.gif)
![[IM Output]](../static/img/montage/tile_2x3.gif)
![[IM Output]](../static/img/montage/tile_x1.gif)
![[IM Output]](../static/img/montage/tile_x2.gif)
![[IM Output]](../static/img/montage/tile_x4.gif)
![[IM Output]](../static/img/montage/tile_4x.gif)
![[IM Output]](../static/img/montage/tile_5x.gif)
![[IM Output]](../static/img/montage/tile_9x.gif)
![[IM Output]](../static/img/montage/multi_0.gif)
![[IM Output]](../static/img/montage/multi_1.gif)
![[IM Output]](../static/img/montage/multi_2.gif)
![[IM Output]](../static/img/montage/frame.jpg)
![[IM Output]](../static/img/montage/border.jpg)
![[IM Output]](../static/img/montage/frame_shadow.jpg)
![[IM Output]](../static/img/montage/shadow_noframe.jpg)
![[IM Output]](../static/img/montage/shadow_spacing.png)
![[IM Output]](../static/img/montage/label_fname.jpg)
![[IM Output]](../static/img/montage/label_shadow.jpg)
![[IM Output]](../static/img/montage/label_fname3.jpg)
![[IM Output]](../static/img/montage/titled.jpg)
![[IM Output]](../static/img/montage/labeling.jpg)
![[IM Output]](../static/img/montage/label_control.jpg)
![[IM Output]](../static/img/montage/label_files.jpg)
![[IM Output]](../static/img/montage/comment_files.jpg)
![[IM Output]](../static/img/montage/caption_files.jpg)
![[IM Output]](../static/img/montage/my_data_files.jpg)
![[IM Output]](../static/img/montage/montage_null.jpg)
![[IM Output]](../static/img/montage/double_frame.jpg)
![[IM Text]](../static/img/montage/photo_index_sizes.txt.gif)
![[IM Output]](../static/img/montage/montage_columns_2.gif)
![[IM Output]](../static/img/montage/montage_overlap.jpg)
![[IM Output]](../static/img/montage/montage_rot_overlap.jpg)
![[IM Output]](../static/img/montage/polaroid_overlap.jpg)
![[IM Output]](../static/img/montage/montage_cat.jpg)
![[IM Output]](../static/img/montage/montage_array.jpg)
![[IM Output]](../static/img/montage/montage_cat2.jpg)
![[IM Output]](../static/img/montage/montage_cat3.jpg)
![[IM Output]](../static/img/montage/montage_geom_1.jpg)
![[IM Output]](../static/img/montage/montage_geom_0.jpg)
![[IM Output]](../static/img/montage/montage_geom_1x1.jpg)
![[IM Output]](../static/img/montage/bg_frame_1.gif)
![[IM Output]](../static/img/montage/bg_shadow.gif)
![[IM Output]](../static/img/montage/bg_shadow_framed.gif)