So fügen Sie mit Imagemagick einen Rahmen hinzu

So fügen Sie mit Imagemagick einen Rahmen hinzu

Ich möchte meinen Bildern in Imagemagick Folgendes hinzufügen:

  • weißer Rand
  • 2 Zoll breit

Wie kann ich es tun?

Antwort1

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

fügt dem Bild einen weißen Rand mit einer Größe von 20 Pixeln hinzu. Sie müssen nur herausfinden, wie viele Pixel ein Zoll (dpi) des Bildes sind.

Weitere Beispiele finden SieHier.

Bei meinem Testbild waren die DPI-Informationen darin gespeichert. Ich konnte sie abrufen identivy -verboseund sie sehen so aus:

$ 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
...

Wie Sie sehen, hat es 96 x 96 dpi, da die Einheiten vom Typ PixelsPerInch sind.

In diesem Fall sind 2 Zoll auf meinem Bild 192 Pixel.

Antwort2

Ermitteln Sie zunächst, wie viele Pixel der 2-Zoll-Rand haben soll. Addieren Sie diese Pixel zu den #Pixeln Ihres Originalbilds (zweimal, da Sie auf beiden Seiten den gleichen Rand haben möchten).

Verwenden Sie jetzt Konvertieren wie

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

Nehmen wir an, die Bildgröße beträgt 3600 x 2400 und die Auflösung 100 Pixel/Zoll. Sie müssen also zu jeder Dimension 400 Pixel hinzufügen, um als Ergebnis 4000 x 2800 zu erhalten. (Wie Sie diese Werte herausfinden, wurde von @V-master beschrieben.) Dann lautet der Befehl (wobeiEingabe.jpgist das Original undAusgabe.jpgist das Ergebnis)

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

Bei mir hat es wie gewünscht geklappt.

Bearbeiten:

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

(wie bereits von @V.master vorgeschlagen) funktioniert auch, nur -bordercolordie Option muss vorher definiert werden -border. Es ist eine Abkürzung für meinen Vorschlag, den ich verwende, um Ränder unterschiedlicher Größe zu haben (bzw. festes Seitenverhältnis unabhängig von dem des Originalbilds).

Es gibt keine Möglichkeit, die Einheit auf Zoll einzustellen. Was 2 Zoll sind, hängt von der Ausgabeauflösung Ihres Bildes beim Drucken ab (z. B. 300 dpi: n=600, 600 dpi: n=1200 usw.).

Für alle, die sich fragen:xc Nicht-Option steht fürX Fensterfarbeund legt denLeinwandFarbe. In neueren Versionen von ImageMagick canvaswurde der Alias ​​zur Vereinfachung hinzugefügt.

Antwort3

Während ich an der Dokumentation arbeite, muss ich Bilder aktualisieren und erneut Rahmen hinzufügen.

Das folgende Skript erleichtert das Hinzufügen von Rahmen:

#!/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"

Wir haben beispielsweise eine Datei myimage.pngohne Rahmen. Der folgende Befehl:

$ ./add_frame.sh myimage.png

Für Datei myimage.png:

  1. erstellt myimage-original.pngmit aktuellem (ohne Frame) Inhalt
  2. fügt Rahmen hinzumyimage.png

Für die nächsten Läufe:

$ ./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. Es kopiert myimage-original.pngmyimage.png
  2. Rahmen hinzufügen zumyimage.png

Daher aktualisiere ich myimage-original.pngden Rahmen einfach und füge ihn per Skript hinzu.

verwandte Informationen