Como adicionar uma borda usando o Imagemagick

Como adicionar uma borda usando o Imagemagick

Quero adicionar às minhas fotos no Imagemagick:

  • borda de cor branca
  • 2 polegadas de largura

Como eu posso fazer isso?

Responder1

convert -bordercolor white -border 20 input.jpg output.jpg

adicionará uma borda branca de tamanho 20 pixels à imagem. Você só precisa descobrir quanto px equivale a uma polegada (dpi) de imagem.

Mais exemplos podem ser encontradosaqui.

No caso da minha imagem de teste, ela salvou informações de dpi. Eu poderia usá-lo identivy -verbosee ficaria assim:

$ identify -verbose tiger.jpg
Image: tiger.jpg
  Format: JPEG (Joint Photographic Experts Group JFIF format)
  Mime type: image/jpeg
  Class: DirectClass
  Geometry: 600x400+0+0
  Resolution: 96x96
  Print size: 6.25x4.16667
  Units: PixelsPerInch
  Type: TrueColor
...

Como você pode ver, possui 96x96 dpi, pois as unidades são do tipo PixelsPerInch.

Nesse caso, 2 polegadas na minha imagem equivalem a 192px.

Responder2

Primeiro, descubra quantos pixels a borda de 2" terá. Adicione esses pixels aos #pixels da sua imagem original (duas vezes, pois você deseja a mesma borda em cada lado).

Agora use converter como

convert <input> -size <newsize> xc:white +swap -gravity center -composite <output>

Digamos que o tamanho da imagem seja 3600x2400 e a resolução seja 100px/pol. Então você tem que adicionar 400px a cada dimensão, obtendo 4000x2800 como resultado. (Como descobrir esses valores foi descrito por @V-master). Então o comando lê (ondeentrada.jpgé o original esaída.jpgé o resultado)

convert input.jpg -size 4000x2800 xc:white +swap -gravity center -composite output.jpg

Para mim, isso funcionou conforme solicitado.

Editar:

convert input.jpg -bordercolor white -border <n> output.jpg

(como já sugerido por @V.master) também funciona, apenas -bordercolora opção deve ser definida antes -border. É um atalho para minha sugestão, que utilizo para ter bordas de tamanhos diferentes (rsp. proporção fixa independente da imagem original).

Não há opção para definir a unidade em polegadas. O valor de 2" depende da resolução de saída da sua imagem ao ser impressa (por exemplo, 300dpi: n=600, 600dpi: n=1200 etc.).

Para aqueles que se perguntam: a xcnão opção significaCor da janela X, e define otelacor. Nas versões mais recentes do ImageMagick, o canvasalias foi adicionado para maior clareza.

Responder3

Enquanto trabalho na documentação, tenho que atualizar as imagens e adicionar moldura novamente.

O script a seguir facilita a adição de quadros:

#!/bin/bash -e
if [ -z "$1" ]; then
    echo "Usage: $0 file"
    exit 1
fi

file="$1"
if [[ "$file" == *"-original"* ]]; then
    original=$file
    file=${file//-original/}
else
    extension=${file##*.}
    original="${file%.$extension}-original.$extension"
fi

if [ ! -e "$original" ]; then
    mv "$file" "$original"
fi

convert -bordercolor white -border 2 "$original" "$file"

Por exemplo, temos um arquivo myimage.pngsem moldura. O seguinte comando:

$ ./add_frame.sh myimage.png

Para arquivo myimage.png:

  1. cria myimage-original.pngcom conteúdo atual (sem moldura)
  2. adiciona quadro amyimage.png

Para as próximas corridas:

$ ./add_frame.sh myimage.png # you may use current name

$ ./add_frame.sh myimage-original.png # or with original suffix, result is the same
  1. Ele copia myimage-original.pngmyimage.png
  2. Adicionar moldura amyimage.png

Assim, apenas atualizo myimage-original.pnge adiciono quadro via script.

informação relacionada