GIMP: Strichpfad entlang einzelner Punkte

Was ich brauche: um verschiedene Symbolsätze an denselben Stellen des Bildes zu zeichnen (mit dem Zweck, verschiedene Netzwerkschemata mit derselben Struktur zu zeichnen). Es gibt VIELE Punkte. Daher möchte ich die Herstellung des Symbols und die Positionen davon im endgültigen Bild trennen können, dh ich möchte das Symbol nicht zeichnen und dann an verschiedenen Stellen kopieren und einfügen, da dies nicht möglich wäre Ändern Sie die Symbolsätze, ohne alles neu zeichnen zu müssen.

Lösungsversuch: Ich dachte an i) das Symbol zeichnen und als Pinsel speichern, ii) einzelne Punkte mit dem Pfadwerkzeug an den richtigen Positionen zeichnen, iii) den Pfad mit dem Symbolpinsel streichen. Iteriere Schritt iii) mit verschiedenen Pinseln.

Problem: Stroke Path.. funktioniert nicht mit einzelnen Punkten. Wenn ich jedoch kurze Pfade anstelle von einzelnen Punkten verwende, gibt es ein Problem mit dem Abstand: Im Pfad habe ich manchmal 2 Symbole, manchmal 1 und manchmal 0.

Gehe ich das Thema falsch an? Gibt es eine Lösung?

Wenn Sie "Ändern des Quellcodes von GIMP" zu den möglichen Lösungen hinzufügen, könnte die Antwort darin bestehen, dass Striche für Pfade funktionieren, die aus einzelnen Punkten bestehen. Das würde diese Frage jedoch zu StackOverflow verschieben.

Antworten (1)

Dies kann also tatsächlich als wegweisender Fehler angesehen werden - oder zumindest als fehlendes Feature. Selbst wenn GIMP-Entwickler es beheben können, könnte eine neue Version mit der implementierten Funktion Monate dauern.

Andererseits ist so etwas mit den Skript-Engines, die mit GIMP mitgeliefert werden, mehr oder weniger einfach zu bewerkstelligen. Die folgenden 6 Codezeilen können so eingefügt werden, wie sie in der Python-Konsole von GIMP ( Filters->Python->Console) sind - Sie erstellen einen einzelnen "1-Klick-Strich" für jeden Knoten (nicht jede einzelne Knotenkomponente) auf einem Pfad auf der obersten Ebene von das zuletzt geöffnete Bild (Registerkarte ganz rechts). (Ändern Sie die 0 in der ersten Zeile, um zu anderen geöffneten Bildern zu gelangen, in der Reihenfolge von rechts nach links)

img = gimp.image_list()[0]
for vector in img.vectors:
    for stroke in vector.strokes:
        for i in range(2, len(stroke.points[0]), 6):
            x, y = stroke.points[0][i: i + 2]
            pdb.gimp_paintbrush_default(img.layers[0], 2, [int(x), int(y)])

Natürlich ist es umständlich, dies jedes Mal einzufügen, wenn Sie die Aufgabe ausführen müssen. Um daraus ein Plug-in zu erstellen, folgen Sie dem Beispiel und den Anweisungen unter http://www.gimp.org/docs/python/ (diese Zeilen sollen zum Funktionskörper werden - und Sie sollten drei Parameter registrieren: PF_IMAGE, PF_DRAWABLE und PF_VECTORS, wobei dieses Beispiel nur "PF_INT" hat). Speichern Sie die Datei mit der Erweiterung „.py“ im Plug-In-Ordner und markieren Sie sie für Nicht-Windows-Plattformen als ausführbar (unter Verwendung der Dateieigenschaften) )