Hilfe:Bildbearbeitung in der Kommandozeile (Linux)

From Open Source Ecology - Germany
Jump to: navigation, search

Bildbearbeitung in der Kommandozeile benötigt schon fortgeschrittene Computerfahrungen, da man wissen sollte, wie die Kommandozeile unter Linux zu bedienen ist.

Mehrerer Bilder kacheln

ImageMagick bietet die Möglichkeit das Kommando montage zu nutzen (s. englische Dokumentation (www.imagemagick.org)). Das Kommando kann wie folgt benutzt werden.

montage -help # die Hilfe anzeigen

Das fertige Komanndo ausführen …

montage -label '%f' -pointsize 2 -density 300 *.svg \
  -tile 15x30 \
  -geometry '+40+0' \
 ./papirus-emblames.png
Tipp: Nur echte Dateien verarbeiten (ohne symbolische Links) …

Für diesen Fall kann man einfach das *.svg austauschen mit dem Kommando für find, allerdings muss man es dann mit zwei Anführungszeichen umfassen:

montage -label '%f' -pointsize 2 -density 300 \
  `find . -iname '*.svg' -type f` \
  -tile 15x30 \
  -geometry '+40+0' \
 ./papirus-emblames.png

find sucht also nur Typ „f“, also Datei für das englische file.

Oder die Dateien noch sortieren mittels find … | sort:

montage -label '%f' -pointsize 2 -density 300 \
  `find . -iname '*.svg' -type f | sort` \
  -tile 15x30 \
  -geometry '+40+0' \
 ./papirus-emblames.png


Das Bildergebnis:

Gekachelte Bilder mit Beschriftung der Themengestaltung Papirus für Computer-Arbeitsflächen (Papirus bei opendesktop.org)

Die Erklärungen:

  • bezeichne die Bilder mit dem Dateinamen (hier %f für englisch file) mittels -label '%f'
  • setze die Punktgröße der Schrift neu -pointsize 2 (etwas Probieren nötig im Versuch-und-Irrtum-Modus ;-)
  • erhöhe die Auflösung der Teilbilder -density 300 (theoretisch 300 DPI, dots per inch=Punkte pro Zoll)
  • kachel und begrenze das Endbild auf 15 Spalten × 30 Zeilen: -tile 15x30 (falls nicht alle Bilder in 15×30 hineinpassen, erzeugt ImageMagick automatisch nummerierte Dateien: …-0.png, …-1.png)
  • verändere den Außenrand der Teilbilder: -geometry '+40+0' fügt seitlich/horizontal 40 px aber oben und unten/vertikal 0 px
  • um noch mehr Prozess-Informationen zu erhalten füge am Anfang die Option -verbose hinzu

Hinweis: die zentrale Einstelloption ist hier -density. Man muss etwas ausprobieren um die gewünschte Dateigröße und Auflösung zu erhalten, damit alles gut sichtbar wird und das Endbild nicht übermäßig groß wird.

Den Hintergrund einfärben

Wichtig hierbei ist, dass man die Transparenz einschaltet (-alpha 'Copy') und die Hintergrundfarbe angibt (-background '#76B82A'), wenn man die schwarze Schriftfarbe abändern möchte stellt man dies über -fill '#D3DAE3' ein:

montage -label '%f' -verbose -alpha 'Copy' \
  -background '#76B82A'  \
  -density 300 \
  -pointsize 2 -fill '#D3DAE3' \
  `find . -iname '*.svg' -type f | sort` \
  -tile 10x -geometry '+15+0' \
  ./papirus-panel-20180501-bg-76B82A.png

Das Bildergebnis:

Gekachelte Bilder eingefärbt mit OSEG grün, mit Beschriftung der Themengestaltung „Papirus“ für Computer-Arbeitsflächen (Papirus bei opendesktop.org)


Eine Farbe gezielt umfärben

Bei ImageMagick kann man gleichzeitig bei dem Kommando montage z.Z. nicht erreichen, dass man Bilder zusammenfügt und eine Farbe umfärbt. Man verwendet das Kommando convert. In folgendem Beispiel soll die Füllfarbe hellgelbes OSEG #F0EEB7 sein, die nur da einfärbt, wo die graue Farbe #D3DAE3 vorhanden ist. Um in der Farberkennung nicht so streng nur eine einzige Farbe auszutauschen, sondern ein besseres Aussehen zu erzielen, darf die graue Suchfarbe 15 % Farbabweichung mehr haben (-fuzz 15%) und wird trotzdem ins hellgelb umgefärbt.

convert ./papirus-panel-20180501-bg-76B82A-4.png \
 -fuzz 15%  \
 -fill '#F0EEB7' -opaque '#D3DAE3' \
 ./papirus-panel-20180501-bg-76B82A-fg-F0EEB7-4.png

Hinweis: das Wichtigste ist diese Reihenfolge der Optionen (-fuzz -fill -opaque), falls anders vertauscht, wird es unerwartete Ergebnisse liefern.

Das Bildergebnis:

Gekachelte Bilder eingefärbt mit OSEG grün, und hellgelb eingfärbten Symbolen, aus der Themengestaltung „Papirus“ für Computer-Arbeitsflächen (Papirus bei opendesktop.org)