====== imagemagick ====== ===== Beispiele ===== ==== Einfache Anzeige des Bildes ==== display Pinguine.jpg ==== Konvertieren ==== convert Falkland_Islands_Penguins_36.jpg Pinguine.png Soll das Seitenverhältnis ignoriert werden, ist hinter der Größe ein »!« anzugeben. Damit wird das Bild verzerrt. convert Falkland_Islands_Penguins_36.jpg -scale 800x600! Pinguine.jpg ==== Größe ändern (resize) ==== convert image.jpg -resize 400x400 -quality 85 image_resize.jpg ==== Bild skalieren ==== convert Falkland_Islands_Penguins_36.jpg -scale 800x600 Pinguine.jpg Rahmen ergänzen: convert Pinguine.jpg -border 10 Pinguine-Rahmen.jpg Eine andere Farbe lässt sich mit -bordercolor angeben: convert Pinguine.jpg -bordercolor blue -border 10 Pinguine-Rahmen.jpg Ein 3D-Rahmen lässt sich mit -frame erzeugen, die zugehörige Farbe ist -mattecolor: convert Pinguine.jpg -mattecolor blue -frame 30x20+7+5 Pinguine-Rahmen.jpg ==== Text ergänzen ==== convert -pointsize 16 label:Text Text.png Der Text lässt sich auch direkt ans Bild anfügen: convert Pinguine.jpg -pointsize 16 label:Text -gravity south -append Pinguine-Text.jpg Das Ganze lässt sich noch ausbauen: Dabei werden mit -background und -fill die Farben für den Hintergrund und die Schrift angegeben. Weitere Beispiele zur Texterzeugung finden sich auf der Webseite des Projekts. Mit einer Schleife können so alle Bilder in einem Verzeichnis mit ihren Namen ergänzt werden: for f in *.jpg; do convert "$f" -mattecolor blue -frame 5x5+0+5 -pointsize 16 -background blue -fill white label:"$f" -frame 0x5 -gravity south -append -frame 15x10+5+0 Bild_mit_Namen/"$f"; done ==== Abgerundete Ecken ==== In diesem Beispiel wird eine Maske erzeugt, die anschließend über das Bild gelegt wird. convert -size 512x340 xc:white -fill black -stroke black -draw "roundrectangle 0,0 512,340 40,40" Maske.png Wie im vorigen Textbeispiel wird die Grafik neu erzeugt. Dazu wird mit -size die Größe des zu erzeugenden Bildes angegeben (mittels identify ermittelt). Mit xc:white wird ein Bild mit weißem Hintergrund erzeugt. Anschließend werden Füll- und Malfarbe auf schwarz gesetzt und in -draw wird ein Zeichenbefehl, hier ein abgerundetes Rechteck, angegeben. Das Bild wird nun als PNG-Datei gespeichert (um keinen Qualitätsverlust zu erleiden). Im nächsten Schritt wird das Foto entsprechend der gerade erzeugten Maske verändert: convert Pinguine.jpg Maske.png -compose lighten -composite Pinguine-abgerundet.jpg Das Erzeugen einer temporären Masken-Datei ist nicht nötig, sie hilft aber beim Nachvollziehen der einzelnen Schritte. Die Maske kann direkt in einem Befehlsblock erzeugt werden: convert Pinguine.jpg \( -size 512x340 xc:white -fill black -stroke black -draw "roundrectangle 0,0 512,340 40,40" \) -compose lighten -composite Pinguine-abgerundet.jpg Ein Befehlsblock wird mit runden Klammern definiert, der Backslash wird für die Shell benötigt. Der Block in den runden Klammern wird für sich ausgeführt, das Resultat wird wie ein Bild weiterverarbeitet. ==== 3D-Effekt ==== convert Pinguine.jpg -raise 10 Pinguine-erhoben.jpg Diesen kann man noch ausbauen. Zuerst wird eine Maske erzeugt: convert Pinguine.jpg -fill gray50 -colorize 100% -raise 10 -normalize -blur 0x5 Maske.png Um den Aufruf besser zu verstehen, hilft es, ihn schrittweise nachzuvollziehen. Mit -fill gray50 -colorize 100% wird das Ausgangsbild mit grau übermalt. Es wird somit eine graue Fläche in der Größe des Ausgangsbildes erstellt. Mit -raise 10 wird der einfache 3D-Effekt erzeugt. Die Farben werden mit -normalize angepasst, so dass die hellste Farbe weiß ist und die dunkelste schwarz. Nun werden mit -blur 0x5 die Farben verwischt. Anschließend wird die Helligkeit des Bildes entsprechend der Maske angepasst: convert Pinguine.jpg Maske.png -compose hardlight -composite Pinguine-3D.jpg ==== Abgerissener Rand ==== Einen Effekt wie bei einem abgerissen Bild erreicht man mit der folgenden Maske: convert Pinguine.jpg -fill black -colorize 100% -virtual-pixel white -spread 20 -blur 0x5 -threshold 50% -spread 20 -blur 0x3 -threshold 50% -spread 1 -blur 0x1 Maske.png Auch hier empfiehlt es sich, die Schritte einzeln nachzuvollziehen. Analog zu obigem Beispiel wird mit -fill black -colorize 100% eine schwarze Fläche erzeugt. Die Option -virtual-pixel white setzt die Farbe außerhalb des Bildes auf weiß. -spread 20 verteilt die Pixel zufällig (einfach mal an Pinguine.jpg ausprobieren). Bei der schwarzen Fläche hat dies nur einen Effekt am Rand, dort werden schwarze Pixel gegen die weißen außerhalb eingetauscht. Mit -blur 0x5 wird verwischt und mit -threshold 50% werden die Pixel abhängig von ihrer Helligkeit in schwarz beziehungsweise weiß konvertiert. Anschließend wiederholen: Pixel zufällig verteilen, verwischen und auf schwarz/weiß setzen. Die Option -spread 1 -blur 0x1 führt zu einem rauhen Rand. Nun wird das Bild entsprechend der Maske aufgehellt: weiße Stellen aus der Maske werden im Bild weiß: convert Pinguine.jpg Maske.png -compose lighten -composite Pinguine-abgerissen.jpg ==== gif aus Einzelbildern ==== convert -delay 1x5 -loop 0 images_dir/out*.gif animation.gif ==== Bilder zusammenfügen ==== Vertikal zusammenfügen convert 1.png 2.png 3.png -append result/result-sprite.png ==== PDF aus Bildern erstellen ==== > convert quelle.png ziel.pdf Wildcard nutzen: > convert *.jpg ziel.pdf Druckfertiges Dokument aus Bildern in A4 erstellen: > convert *.* -compress jpeg -resize 1240:1753 -units PixelsPerInch -density 150:150 -page a4 multipage.pdf Ggf. -resize weglassen: > convert *.* -compress jpeg -units PixelsPerInch -density 150:150 -page a4 multipage.pdf ==== Bilder aus PDF extrahieren ==== pdfimages -j quelle.pdf zielverzeichnis ==== Informationen über Bilder anzeigen ==== me@localhost:~$ identify Falkland_Islands_Penguins_36.jpg Pinguine.jpg Falkland_Islands_Penguins_36.jpg JPEG 2048x1361 2048x1361+0+0 8-bit sRGB 1.04MB 0.000u 0:00.000 Pinguine.jpg[1] JPEG 800x532 800x532+0+0 8-bit sRGB 258KB 0.000u 0:00.000 ===== Siehe auch ===== - [[graphicsmagick]] ===== Weblinks ===== * https://www.imagemagick.org/script/convert.php * https://wiki.ubuntuusers.de/ImageMagick/