
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 -verbose
und 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 -bordercolor
die 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 canvas
wurde 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.png
ohne Rahmen. Der folgende Befehl:
$ ./add_frame.sh myimage.png
Für Datei myimage.png
:
- erstellt
myimage-original.png
mit aktuellem (ohne Frame) Inhalt - fügt Rahmen hinzu
myimage.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
- Es kopiert
myimage-original.png
→myimage.png
- Rahmen hinzufügen zu
myimage.png
Daher aktualisiere ich myimage-original.png
den Rahmen einfach und füge ihn per Skript hinzu.