selinfo-dir.scm


Beschreibung

Es werden Bilder in einem bestimmten Seitenverhältnis benötigt. Die Vorlagen sind Bilddateien im Quellverzeichnis dir-in. 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.

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-Verzeichnis

Der Pfad des Verzeichnisses, in dem die Bilddateien liegen, ohne einen abschließenden Schrägstrich.

dir-out - Ziel-Verzeichnis

Der Pfad des Zielverzeichnisses ohne einen abschließenden Schrägstrich. Im Verzeichnis dir-out wird zu einem Bild dir-in/NAME.jpg eine Datei NAME.scm mit den Daten eines Bildausschnitts gespeichert. Die Verzeichnisse dir-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.

Einrichtung

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.

Die Info-Dateien

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-size WIDTH HEIGHT
sel-offset X Y sel-size SELWIDTH 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.

Bildverarbeitung

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 step = 0 werden die beiden Bild-„Parasiten” mit den Namen de-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”

„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:

de-herbaer-selinfo-dir/tag

Der Wert ist ein Hinweis zur weiteren Verarbeitung des Bildes, s. TAG.

de-herbaer-selinfo-dir/rot

Der Wert gibt die nötitge Drehung des Bildes an, s. ROTATION.

Registrierung und Menüeintrag

Die Prozedur script-fu-de-herbaer-selinfo-dir ist in der Gimp-Prozedurdatenbank registriert. Ihr wird der Menüpunkt Filter → Verzeichnis → Ausschnittdaten zugeordnet.

Tastenkombinationen

Ctrl+Alt+H

Die Prozedur de-herbaer-selinfo-dir-hardcut setzt den Wert des Bild-„Parasiten” de-herbaer-selinfo-dir/tag auf den Wert hardcut.

Ctrl+Alt+Pad-0

Die Prozedur de-herbaer-selinfo-dir-rot-none setzt den Wert des Bild-„Parasiten” de-herbaer-selinfo-dir/rot auf den Wert 0.

Ctrl+Alt+Pad-1

Die Prozedur de-herbaer-selinfo-dir-rot-left setzt den Wert des Bild-„Parasiten” de-herbaer-selinfo-dir/rot auf den Wert 1.

Ctrl+Alt+Pad-2

Die Prozedur de-herbaer-selinfo-dir-rot-turn setzt den Wert des Bild-„Parasiten” de-herbaer-selinfo-dir/rot auf den Wert 2.

Ctrl+Alt+Pad-3

Die Prozedur de-herbaer-selinfo-dir-rot-right setzt den Wert des Bild-„Parasiten” de-herbaer-selinfo-dir/rot auf den Wert 3.

Ctrl+Alt+W

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.

Abhängigkeiten

Zu diesem Skript selinfo-dir.scm ist das weitere Skript process-dir.scm (Quelle) erforderlich.