Es werden Bilder in einem bestimmten Seitenverhältnis benötigt. Die Vorlagen sind Bilddateien im Quellverzeichnis
. Aus jedem dieser Bilder ist ein rechteckiger Ausschnitt auszuwählen, der in dem Ergebnis-Bild enthalten sein muss. Der kleinste „Rahmen” mit dem gewünschten Seitenverhältnis bestimmt die Größe des Ziel-Bildes.dir-in
Normalerweise wird der Rahmen so über das Quell-Bild gelegt, dass er den Ausschnitt und eine mölichst große Fläche des Quell-Bildes überdeckt. Falls der Rahmen das Quell-Bild überragt, wird er mit einem Paar von Rändern in der „durchschnittlichen” Farbe des Ausschnitts ausgefüllt.
Manchmal ist des besser, den Ausschnitt mit einem Paar von Rändern in der durchschnittlichen Farbe bis zur Rahmengröße zu erweitern, ohne den Ausschnitt des Quell-Bildes zu erweitern.
Anschließend muss das Bild manchmal noch um 90, 180 oder 270 Grad gedreht werden.
Ich benutze Gimp, um den Ausschnitt und die weitere Verarbeitung festzulegen. Die Prozedur script-fu-de-herbaer-selinfo-dir
zeigt nacheinander alle Bilder in einem Quell-Verzeichnis an. Ich wähle den Ausschnitt und mit einigen Tastenkombinationen die weitere Verarbeitung des Bildes.
Gimp erzeugt zu jedem Bild eine Scheme-Datei (Info-Datei) mit den nötigen Daten für die weitere Verarbeitung. Die Ziel-Bilder erstelle ich mit ImageMagick, das besser für die automatische Verarbeitung geeignet ist.
Die Prozedur script-fu-de-herbaer-selinfo-dir
erwartet die folgenden Parameter:
dir-in
- Quell-VerzeichnisDer Pfad des Verzeichnisses, in dem die Bilddateien liegen, ohne einen abschließenden Schrägstrich.
dir-out
- Ziel-VerzeichnisDer Pfad des Zielverzeichnisses ohne einen abschließenden Schrägstrich. Im Verzeichnis dir-out
wird zu einem Bild
eine Datei dir-in
/NAME
.jpg
mit den Daten eines Bildausschnitts gespeichert. Die Verzeichnisse NAME
.scmdir-in
und dir-out
können gleich sein.
Die erste Bilddatei im Quell-Verzeichnis dir-in
wird geöffnet. Sie können einen Ausschnitt wählen und mit Tastenkombinationen die weiteren Verarbeitungsschritte wählen. Die Tastenkombination Ctrl+Alt+W speichert die Info-Datei, falls es ein Bildausschnitt gewählt ist. Sie schließt das Bild und öffnet das nächste Bild im Quell-Verzeichnis, falls es noch ein Bild gibt.
Die Dateien process-dir.scm
(Quelle) und selinfo-dir.scm
sind in ein Gimp-Skript-Verzeichnis (bei mir ~/.config/GIMP/2.10/scripts
) zu kopieren. Beim Start von Gimp werden sie automatisch geladen.
Wenn die Prozeduren das erste Mal geladen sind, sollten die Tastenkombinationen registriert werden.
Zu jedem Bild, aus dem ein Ausschnitt gewählt wird, wird eine *.scm
-Datei (Info-Datei) erstellt mit den Daten zur weiteren Verarbeitung des Bildes. Sie hat den folgenden Aufbau:
(name "FILENAME
" img-sizeWIDTH
HEIGHT
sel-offsetX
Y
sel-sizeSELWIDTH
SELHEIGHT
red (MEAN
STDDEV
MEDIAN
FLOAT
FLOAT
1.0) green (MEAN
STDDEV
MEDIAN
FLOAT
FLOAT
1.0) blue (MEAN
STDDEV
MEDIAN
FLOAT
FLOAT
1.0) luminance (MEAN
STDDEV
MEDIAN
FLOAT
FLOAT
1.0) tag "TAG
" rot "ROTATION
")
FLOAT
steht hier für Gleitkomma-Zahlen, die in diesem Zusammenhang nicht relevant sind. Die Textdarstellung einer Gleitkomma-Zahl in Gimp leider ist fehlerhaft. Wenn eine deutsche Sprach-Umgebung eingestellt ist, wird eine Komma als Dezimal-Trennzeichen verwendet und am Ende der Zeichenkette „.0
” angehängt. Im Beispiel habe ich zur besseren Lesbarkeit Zeilenwechsel eingefügt. Die erzeugten Dateien bestehen nur aus einer Zeile.
FILENAME
Der Dateiname der Bilddatei
WIDTH
Die Breite des Originalbildes
HEIGHT
Die Höhe des Originalbildes
X
Der Abstand des linken Randes des Ausschnitts vom linken Rand des Originalbildes
Y
Der Abstand des oberen Randes des Ausschnitts vom oberen Rand des Originalbildes
SELWIDTH
Die Breite des Ausschnitts
SELHEIGHT
Die Höhe des Ausschnitts
MEAN
Der Mittelwert der Pixelwerte des Bild-Kanals (red
, green
, blue
oder luminance
) im gewählten Ausschnitt.
STDDEV
Die Standard-Abweichung der Pixelwerte des Bild-Kanals (red
, green
, blue
oder luminance
) im gewählten Ausschnitt.
MEDIAN
Der Median der Pixelwerte des Bild-Kanals (red
, green
, blue
oder luminance
) im gewählten Ausschnitt.
Weitere Zahlen zu den Bildkanälen haben hier keine Aussagekraft.
TAG
Ein Hinweis zur weiteren Verarbeitung des Ausschnitts. Die möglichen Werte sind:
none
Der Bildausschnitt wird erweitert auf die kleinste Größe, die dem geforderten Seitenverhältnis entspricht, soweit die Ränder des Quellbildes nicht überschritten werden. Wenn nötig, wird ein Ränder-Paar in der „durchschnittlichen” Farbe hinzugefügt.
hardcut
Der Bildausschnitt wird nicht erweitert. Wenn nötig, wird ein Ränder-Paar in der „durchschnittlichen” Farbe hinzugefügt, damit das geforderte Seitenverhältnis erreicht wird.
ROTATION
Die nötige Rotation des Bildausschnitts. Der Wert ist eine der Zahlen 0
, 1
, 2
oder 3
. Das Bild ist um ROTATION
* 90° gegen den Uhrzeigersinn zu drehen
Alle Längenmaße sind in Pixeln angegeben.
Ein Beispiel für den Dateiinhalt ist
(name "bild.jpg" img-size 3648 2736 sel-offset 677 103 sel-size 2500 2438 red (176,7879333.0 35,31278143.0 180.0 5986847,97.0 5986847,97.0 1.0) green (165,0638091.0 39,66287376.0 171.0 5986847,97.0 5986847,97.0 1.0) blue (153,7311861.0 45,84376138.0 161.0 5986847,97.0 5986847,97.0 1.0) luminance (167,1097484.0 39,05223019.0 172.0 5986847,97.0 5986847,97.0 1.0) tag "hardcut" rot "3")
Hier zeigt sich der Fehler in der Darstellung der Gleitkomma-Zahlen.
Der Name der .scm
-Datei ist der Dateiname des Bildes mit dem Suffix .scm
anstelle des Bilddatei-Suffixes oder nach dem Bilddatei-Suffix.
Die Prozedur script-fu-de-herbaer-selinfo-dir
ruft die Prozedur de-herbaer-process-dir
aus dem Skript process-dir.scm
(Quelle) auf. Die Prozedur de-herbaer-selinfo-dir
definiert die Verarbeitung eines einzelnen Bildes. Ihr Parameter sind:
image
Die Kennung des aktuellen Bildes
step
0 : Das Bild ist neu geöffnet |
1 : Das Bild wird geschlossen |
Im Falle
werden die beiden Bild-„Parasiten” mit den Namen step
= 0de-herbaer-selinfo-dir/tag
und de-herbaer-selinfo-dir/rot
gelöscht. Die Prozedur de-herbaer-selinfo-dir
ergibt #f
. Das Bild bleibt zur interaktiven Bearbeitung geöffnet. Sie können einen Bildausschnitt wählen (rechteckige Auswahl) und mit den Tastenkombinationen weitere Hinweise für die weitere Verarbeitung eingeben.
Beim nächsten Aufruf von script-fu-de-herbaer-process-dir
( Menüpunkt Filter → Verzeichnis → Weiter, Ctrl+Alt+W) wird de-herbaer-selinfo-dir
mit dem Wert 1
des zweiten Parameters step
aufgerufen.
Wenn keine Eingabe erfolgt ist, die das Bild betrifft, oder wenn keine Auswahl existiert, ist das Ergebnis (#f #f)
. Das Bild wird geschlossen, und es wird keine weitere Datei geschrieben.
Sonst ist das Ergebnis (#t
. ausschnitt
)ausschnitt
steht für eine Scheme-Form mit den Daten des Ausschnitts. #f
bedeutet, dass das Bild nicht im Zielverzeichnis gespeichert wird. ausschnitt
wird in eine .scm
-Datei geschrieben.
„Parasiten” in Gimp sind kleine Datenblöcke (Zeichenketten), die mit einem Objekt, hier einem Bild, verbunden sind und durch einen Namen gekennzeichnet sind. Ich verwende Parasiten mit folgenden Namen:
Die Prozedur script-fu-de-herbaer-selinfo-dir
ist in der Gimp-Prozedurdatenbank registriert. Ihr wird der Menüpunkt Filter → Verzeichnis → Ausschnittdaten zugeordnet.
Die Prozedur de-herbaer-selinfo-dir-hardcut
setzt den Wert des Bild-„Parasiten” de-herbaer-selinfo-dir/tag
auf den Wert hardcut
.
Die Prozedur de-herbaer-selinfo-dir-rot-none
setzt den Wert des Bild-„Parasiten” de-herbaer-selinfo-dir/rot
auf den Wert 0
.
Die Prozedur de-herbaer-selinfo-dir-rot-left
setzt den Wert des Bild-„Parasiten” de-herbaer-selinfo-dir/rot
auf den Wert 1
.
Die Prozedur de-herbaer-selinfo-dir-rot-turn
setzt den Wert des Bild-„Parasiten” de-herbaer-selinfo-dir/rot
auf den Wert 2
.
Die Prozedur de-herbaer-selinfo-dir-rot-right
setzt den Wert des Bild-„Parasiten” de-herbaer-selinfo-dir/rot
auf den Wert 3
.
Diese Tastenkombination ist an die Prozedur script-fu-de-herbaer-process-dir
aus der Script-Datei process-dir.scm
(Quelle) gebunden.
Sie können die Tastenkombinationen über den Menüpunkt Bearbeiten → Tastenkombinationen registrieren oder direkt in die Datei menurc
im Gimp-Verzeichnis (z. B. ~/.config/GIMP/2.10/menurc
) die folgenden Zeilen einfügen:
(gtk_accel_path "<Actions>/plug-in/de-herbaer-selinfo-dir-hardcut" "<Primary><Alt>h") (gtk_accel_path "<Actions>/plug-in/de-herbaer-selinfo-dir-rot-none" "<Primary><Alt>KP_0") (gtk_accel_path "<Actions>/plug-in/de-herbaer-selinfo-dir-rot-left" "<Primary><Alt>KP_1") (gtk_accel_path "<Actions>/plug-in/de-herbaer-selinfo-dir-rot-turn" "<Primary><Alt>KP_2") (gtk_accel_path "<Actions>/plug-in/de-herbaer-selinfo-dir-rot-right" "<Primary><Alt>KP_3") (gtk_accel_path "<Actions>/plug-in/script-fu-de-herbaer-process-dir" "<Primary><Alt>w")
Natürlich können Sie auch andere Tastenkombinationen wählen.
Zu diesem Skript selinfo-dir.scm
ist das weitere Skript process-dir.scm
(Quelle) erforderlich.