
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 -verbose
e 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 -bordercolor
a 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 xc
não opção significaCor da janela X, e define otelacor. Nas versões mais recentes do ImageMagick, o canvas
alias 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.png
sem moldura. O seguinte comando:
$ ./add_frame.sh myimage.png
Para arquivo myimage.png
:
- cria
myimage-original.png
com conteúdo atual (sem moldura) - adiciona quadro a
myimage.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
- Ele copia
myimage-original.png
→myimage.png
- Adicionar moldura a
myimage.png
Assim, apenas atualizo myimage-original.png
e adiciono quadro via script.