Usando Pilhas em ImageMagick para Seletivamente Blur Parte da Imagem
-
22-08-2019 - |
Pergunta
Eu estou tentando anotar algum texto em uma imagem de base com um dropshadow.Eu não gosto dos resultados que eu conseguir usar a opção de sombra, então eu estou colocando para baixo o texto, tornando-a, em seguida, colocar novamente o texto em branco, alguns pixels deslocamento da sombra.Aqui é o comando que eu estou usando:
convert base_image.jpg \
-font TT0590M_.ttf \
-fill gray30 \
-annotate +0+0 '' -gravity North \
-annotate +72+32 'ABCDEFGHIJKLM' \
-blur 0x4 \
-fill white \
-annotate +72+27 'ABCDEFGHIJKLM' \
combined.png
O meu problema é que o blur opção está a diluir-se não somente a primeira camada de texto, mas subjacente da base de dados de imagem.Eu só quero a primeira camada de texto para borrar, não o da base de dados de imagem.
Eu li um pouco sobre a utilização de pilhas e tentou isolar a primeira camada de texto e o borrão usando o comando \( \)
em torno de que a parte, tal como no exemplo seguinte:
convert base_image.jpg \
-font TT0590M_.ttf \
-fill gray30 \
-annotate +0+0 '' -gravity North \
\( -annotate +72+32 'ABCDEFGHIJKLM' \
-blur 0x4 \) \
-fill white \
-annotate +72+27 'ABCDEFGHIJKLM' \
combined.png
Os resultados são os mesmos, tanto o texto de sombra e a base da base de dados de imagem está recebendo blured.Eu tenho medo que eu não estou tendo muita sorte compreensão pilhas ou o que outros comandos que eu deveria estar usando para obter o efeito que eu estou atrás.
Solução
Como tantas vezes acontece, eu continuava a bater longe nesta desde a questão de lançamento e já consegui resolver no meu próprio.
A mudança importante é que eu comecei com um espaço em branco, transparente tela, em vez de começar com a imagem de base.Depois que eu começar o texto direito, eu inserir a imagem de base para a pilha, trocar a ordem de duas imagens na pilha e, em seguida, de compô-las com um compor tipo de "tela", que estabelece um por cima do outro.
Uma outra nota de importação:o canal RGBA é necessário para que a indefinição funciona em conjunto com a transparência da camada de texto, devido a uma peculiaridade na forma como o IM obras.Por isso é necessário é explicado nesta página.
Também, em sistemas Windows (.arquivo bat em vez de um script de shell), as aspas simples precisam estar entre aspas duplas e as barras invertidas "\" precisa ser acentos circunflexos "^", ou tudo desaba.
O script abaixo é o final, resultado de trabalho (*nix versão):
convert \
-size 500x500 xc:transparent \
-font TT0590M_.ttf \
-annotate +0+0 '' -gravity North \
-fill gray30 \
-annotate +75+35 'ABCDEFGHIJKLMNOPQR\nABCDEFGHIJKLMNOPQR' \
-channel RGBA \
-blur 0x4 \
-fill white \
-annotate +72+30 'ABCDEFGHIJKLMNOPQR\nABCDEFGHIJKLMNOPQR' \
-insert 0 base_image.jpg \
-swap 0,1 \
-composite -compose screen \
combined.png