PDA

Vollständige Version anzeigen : python INT8ARRAY zum Aufruf von plug-in- curve- bend


MichaJo
16.04.2008, 14:41
Hallo an die Programmierer und Python-Kenner,
der curve-bend Filter ist recht nett, allerdings fehlt mir die Möglichkeit,
den Verlauf der Kurve direkt im Bild festzulegen.
Als eine Variante erwartet das plugin 256 y-Werte in einem INT8ARRAY:
upper-val-y INT8ARRAY array of 256 y freehand koord {0 <= y <= 255}
Wie muss ich in Python diesen array definieren, um ihn an das plugin übergeben zu können?

Mein Plan: User erstellt Auswahl (Freihand, aus Kanal, aus Pfad, wie auch immer).
Mein Plugin nimmt diese Auswahl und erstellt aus den oberen Auswahlpunkten 256 y-Werte (skaliert) und übergibt dieses shape an curve-bend.


Gruß

Micha

TheGrudge
16.04.2008, 20:31
Habe diesen Filter jetzt nicht getestet, aber ein Array in Python kann über ein Tuple oder eine Liste erstellt werden...

x = () Tuple
y = [] Liste

Wenn du also einen Array mit 4 Zahlen machen willst, dann wäre das

x = (1,2,3,4)
oder
y = [1,2,3,4]

Aber diese Antwort war bestimmt nicht das was du hören wolltest, oder?

MichaJo
16.04.2008, 20:33
Mit Übergabe eines Tupels (hardcoded) funktioniert's.
Probier da mal weiter...


Gruß

Micha

TheGrudge
16.04.2008, 20:39
Wenn du diesen Array dynamisch ermitteln willst, wäre eine Liste wohl besser, ein Tuple ist nicht mehr veränder- und erweiterbar...
Solltest du also versuchen, mittels einer for-Schleife oder dergleichen Werte zu sammeln, solltest du sie wohl besser in einer Liste speichern, ein Tuple kennt kein Assignment, append() als Methode funktioniert dort nicht.

Falls der Filter aus irgendeinem Grund nur Tuple akzeptiert, kannst du deine Liste aber auch in ein Tuple verwandeln:

y = tuple(x)

wobei x die erstellte Liste ist.

MichaJo
16.04.2008, 20:49
Falls der Filter aus irgendeinem Grund nur Tuple akzeptiert, kannst du deine Liste aber auch in ein Tuple verwandeln:

y = tuple(x)

wobei x die erstellte Liste ist.
Das wusste ich nicht, danke. Allerdings hatte ich bei der Listenbildung einen Fehler gemacht.
Das plugin akzeptiert auch eine Liste als Parameter (INT8ARRAY) direkt.
Bisher halt mit manuell eingegebenen Werten, aber das sollte zum Füllen per for-Schleife dann keinen Unterschied mehr machen.



Gruß

Micha

MichaJo
19.04.2008, 19:09
Ein kurzes Zwischenergebnis, da ich nicht sehr viel Zeit dafür aufwende,
aber Einiges über Python und GIMP lerne.
Nochmal danke an die genervten Fragenbeantworter (meiner threads hier...)

Zufrieden bin ich noch nicht, aber man kann sehen, was es bringen soll.
Der Anwender wählt einen Bereich, der an ein shape angepasst werden soll.
Dieses shape wählt er aus einem Kanal, den er vorher erstellt hat (Aus Auswahl, Pfad, whatever).

Im Bild ist links oben das shape, darunter der anzupassende Bereich.
Rechts zwei der möglichen Ergebnisse (bisher)
8763


Gruß

Micha