PDA

Vollständige Version anzeigen : Wie wär es mal mit gequirltem Hintergrund ?


flashnfantasy
26.01.2005, 22:46
Ziel:
Einen kachelbaren Hintergrund zu erzeugen.

Idee:
Das Plugin whirl-pinch dreht den Bildhintergrund ein wenig. Verschiebt man das Bild jetzt um eine feste x und y-Rate, und wendet das Plugin erneut an, dann erzeugt man so nach und nach Wirbelmuster auf dem Bild.
Entscheident ist, daß das Plugin den Rand des Bildes nicht verändert.

Verschiebt man das Bild zB um 1/3 der Breite in X-Richtung und 1/5 der Höhe in Y-Richtung, dann hat man nach 15 Durchgängen wieder das Bild an der alten Stelle.

Weitere Veränderungen werden so weich maskiert, daß sie nur in der Bildmitte zur Wirkung kommen.

Ergebniss:
Bisher steht nur eine Probeversion. Es sieht so aus als ob man kräftig in Farbe umherrührt.
Die verschiedenen Parameter erkläre ich unter dem Code:

430

(define (script-fu-wrapMagic image
drawable
moveMode
spice
distortMode
blurMode
blurDir
edge)

(gimp-image-undo-disable image)
(set! moveRateX 1)
(set! moveRateY 1)
(if (= moveMode 0) (set! moveRateX 3))
(if (= moveMode 0) (set! moveRateY 2))
(if (= moveMode 1) (set! moveRateX 5))
(if (= moveMode 1) (set! moveRateY 3))
(if (= moveMode 2) (set! moveRateX 7))
(if (= moveMode 2) (set! moveRateY 5))
(if (= moveMode 3) (set! moveRateX 11))
(if (= moveMode 3) (set! moveRateY 5))
(if (= moveMode 4) (set! moveRateX 11))
(if (= moveMode 4) (set! moveRateY 7))
(if (= moveMode 5) (set! moveRateX 13))
(if (= moveMode 5) (set! moveRateY 7))
(if (= moveMode 6) (set! moveRateX 13))
(if (= moveMode 6) (set! moveRateY 11))

(if (or (= spice 0) (= spice 1) (= spice 2)) (set! spicex 17))
(if (or (= spice 3) (= spice 4) (= spice 7)) (set! spicex 19))
(if (or (= spice 5) (= spice 8)) (set! spicex 23))
(if (or (= spice 9)) (set! spicex 29))
(if (or (= spice 10)) (set! spicex 31))

(if (or (= spice 0)) (set! spicey 17))
(if (or (= spice 1)) (set! spicey 19))
(if (or (= spice 2) (= spice 3)) (set! spicey 23))
(if (or (= spice 4) (= spice 5) (= spice 6)) (set! spicey 29))
(if (or (= spice 7) (= spice 8) (= spice 9) (= spice 10)) (set! spicey 31))

(if (= blurDir 0) (set! mDir 90))
(if (= blurDir 1) (set! mDir 45))
(if (= blurDir 2) (set! mDir 135))
(if (= blurDir 3) (set! mDir 270))

(set! movesTotal (* moveRateX moveRateY))
(set! moveLoop 0)

(set! usizex (car (gimp-image-width image)))
(set! usizey (car (gimp-image-height image)))


(set! mStrong (/ (+ usizex usizey) 4))
(set! mMedium (/ (+ usizex usizey) 10))
(set! mWeak (/ (+ usizex usizey) 25))
(set! mVeryWeak (/ (+ usizex usizey) 50))
(set! wStrong (/ (+ usizex usizey) 100))
(set! wMedium (/ (+ usizex usizey) 300))
(set! wWeak (/ (+ usizex usizey) 600))
(set! usizexm (/ usizex 6))
(set! usizeym (/ usizey 6))
(set! usizexm2 (/ usizex 3))
(set! usizeym2 (/ usizey 3))

(set! mx (* (/ usizex moveRateX) spicex))
(set! my (* (/ usizey moveRateY) spicey))

(while (< moveLoop movesTotal)
(gimp-selection-none image)
(if (= distortMode 1)
(begin
(plug-in-whirl-pinch 1 image drawable 30 0 1)
))
(if (= distortMode 2)
(begin
(plug-in-whirl-pinch 1 image drawable 90 0 1)
))
(if (= distortMode 3)
(begin
(plug-in-whirl-pinch 1 image drawable 135 0 1)
))
(if (= distortMode 4)
(begin
(plug-in-whirl-pinch 1 image drawable 180 0 1)
))
(if (= distortMode 5)
(begin
(plug-in-whirl-pinch 1 image drawable -135 0 1)
))
(if (= distortMode 6)
(begin
(plug-in-whirl-pinch 1 image drawable -180 0 1)
))

(if (or (= distortMode 7) (< 0 blurMode 1))
(begin
(gimp-rect-select image usizexm usizeym (- usizex usizexm2) (- usizey usizeym2) 2 0 0)
(set! selectionChannel (car (gimp-image-get-selection image)))
(plug-in-gauss 1 image selectionChannel usizexm2 usizeym2 1)
(plug-in-c-astretch 1 image selectionChannel)
(gimp-levels selectionChannel 0 128 255 1 0 255)
))

(if (= distortMode 7) (gimp-hue-saturation drawable 0 45 0 0))

(if (= blurMode 1) (plug-in-mblur 1 image drawable 0 mVeryWeak mDir 0 0))
(if (= blurMode 2) (plug-in-mblur 1 image drawable 0 mWeak mDir 0 0))
(if (= blurMode 3) (plug-in-mblur 1 image drawable 0 mMedium mDir 0 0))
(if (= blurMode 4) (plug-in-mblur 1 image drawable 0 mStrong mDir 0 0))
(if (= blurMode 5) (plug-in-wind 1 image drawable 0 0 wWeak 0 0))
(if (= blurMode 6) (plug-in-wind 1 image drawable 0 0 wMedium 0 0))
(if (= blurMode 7) (plug-in-wind 1 image drawable 0 0 wStrong 0 0))

(gimp-selection-none image)
(if (= edge 2) (plug-in-c-astretch 1 image drawable))
(if (= edge 3) (plug-in-color-enhance 1 image drawable))
(if (= edge 4) (gimp-levels-stretch drawable))
(if (= edge 5) (plug-in-autostretch-hsv 1 image drawable))
(gimp-drawable-offset drawable 1 1 mx my)

(set! moveLoop (+ moveLoop 1))
)

(if (or (< 0 edge 1))
(begin
(set! edgelayer1 (car (gimp-layer-copy drawable 0)))
(gimp-image-add-layer image edgelayer1 -1)
(plug-in-c-astretch 1 image edgelayer1)
(plug-in-edge 1 image edgelayer1 1 0 1)
(gimp-invert edgelayer1)
(set! edgelayer2 (car (gimp-layer-copy drawable 0)))
(gimp-image-add-layer image edgelayer2 -1)
(plug-in-c-astretch 1 image edgelayer2)
(plug-in-edge 1 image edgelayer2 2 0 1)
(gimp-invert edgelayer2)
(set! edgelayer3 (car (gimp-layer-copy drawable 0)))
(gimp-image-add-layer image edgelayer3 -1)
(plug-in-c-astretch 1 image edgelayer3)
(plug-in-edge 1 image edgelayer3 10 0 1)
(gimp-invert edgelayer3)
))
(gimp-image-undo-enable image)
(gimp-image-clean-all image)
(gimp-displays-flush)
)



(script-fu-register "script-fu-wrapMagic"
_"<Image>/Script-Fu/Alchemy/wrap-magic..."
"Wraps Image"
"Mathias"
"Mathias"
"14/05/04"
"RGB*"
SF-IMAGE "Image" 0
SF-DRAWABLE "Drawable" 0
SF-OPTION _"Moves" ' (_"3-2"
_"5-3 time for a coffee"
_"7-5 get lots of cookies and coffee"
_"11-5 take a long nap"
_"11-7 take a really long nap"
_"13-7 are you sure about this"
_"13-11 you are gone nuts"
)
SF-OPTION _"Spices" ' (_"17-17"
_"17-19"
_"17-23"
_"19-23"
_"19-29"
_"23-29"
_"29-29"
_"19-31"
_"23-31"
_"29-31"
_"31-31"
)
SF-OPTION _"Whirl etc" ' (_"None"
_"Wirl 30"
_"Wirl 90"
_"Wirl 135"
_"Wirl 180"
_"Wirl -135"
_"Wirl -180"
_"Hue"
)
SF-OPTION _"Blur" ' (_"None"
_"weakest mBlur"
_"easy mBlur"
_"medium mBlur"
_"strong mBlur"
_"weak wind"
_"medium wind"
_"strong wind"
)
SF-OPTION _"MotionBlur" ' (_"up"
_"up left"
_"up right"
_"down"
)
SF-OPTION _"Edge-Effect\nContrast" ' (_"none"
_"edges (just the Edges)"
_"c-stretch (fine, prefer level stretch)"
_"color-enhance (weak)"
_"levels stretch (most beautyful)"
_"hsv-stretch (less color, more contrast)"
)

)

Moves Die Anzahl der Bewegungen in X und Y Richtung. Das Produkt gibt die Gesamtzahl an Bewegungen an. Also, je höher die Zahl, desto mehr einzelne Schritte, desto länger dauert es.

Spices Ist ein Mulitplikator für die Moves, verändert nur endgültige Muster. Ich habe festgestellt, daß egal welches Anfangsmuster man nimmt, nach einer bestimmten Anzahl von Moves das Ergebniss immer das Gleiche ist. Mit den Parameter Spices kann man jedoch auf das Endergebniss Einfluss nehmen.

Whirl etc. Hier wird das Muster durchmischt. Hier werden in Zukunft noch ne ganze Menge Erweiterungen passieren !
Genauere Beschreibung der Parameter spare ich mir mal.

Blur Gerade mit dem Motion-Blur kann man die teilweise harten Kontraste wirkungsvoll durchmischen und es kommen weiche Bilder raus.

MotionBlur Die Richtung des Blurs - auch einfach nur, um verschiedene Parameter zu haben.

Edge-Effect-Contrast Die Edges können noch eine schöne Kombination des ganzen darstellen. Ich nehme sie mal grundsätzlich dazu, weil man mit ihnen ein wenig experimentieren sollte.
Kontrast kann total wichtig werden, wenn manche Bilder nach und nach zu einem Einheitsfarbton vermischt werden, dann sollte man hier einen der Parameter setzen um die Farbkraft zu erhalten.

Renegade
27.01.2005, 14:41
In welchen GIMP ordner muss man das Script einfügen?

Mfg Renegade

Hans
27.01.2005, 21:08
~/.gimp-2.2/scriptsDie Tilde (~) ist dein Homeverzeichnis. Oder in einem Ordner deiner Wahl, dann musst du das aber in den Eistellungen bekannt machen.


@flashnfantasy

Da scheint dir ja so richtig der große Wurf gelungen zu sein. Die ganze Community ist am wirbeln :D Glückwunsch.

Hans

flashnfantasy
28.01.2005, 10:21
Neuer Script:

Bei dem nachfolgenden Script hat sich nur ein wenig geändert gegenüber dem ersten Script...

Der Parameter Whirl ist jetzt aufgeteilt, zusätzlich kommt noch der Parameter 'Alternate' dazu. Bei gesetzten Alternate dreht sich der Wirbel abwechselnd gegen und mit dem Uhrzeiger, ansonsten dreht er sich wie bisher immer nur in eine Richtung.
Es entstehen dadurch nur ein paar neue Muster.

Whirl Strength gibt die Größe des Wirbels an. Bisher waren alle Whirls auf 1. Jetzt können kleinere Whirls verwendet werden.

Strength Blur gibt die Stärke des Blurs an. Eigentlich nur ein zusätzlicher Parameter ohne die riesige Auswirkung, die ich mir erhofft habe.

Contrast ist endlich ein eigenes Feld, ich habe auch gleich den besten Wert als Default gesetzt.

Edge gibt ein paar weitere Ebenen am Ende dazu, die sich sehr schön für Kombinationen eignen. Mit dem Verwirbeln hat das aber nichts zu tun.

Sharpen ist mit sehr viel Vorsicht zu geniessen, die Ergebnisse werden meistens nichts. Sharpen soll die Strukturen des Motion-Blurs verstärken, ich habe mir davon so eine Art Windeffekt versprochen. Das klappt jedoch ganz selten, meist schaukelt sich das Ergebniss auf und endet in einem 'strukturellen Mist', wenn auch kachelbar :P

@Hans
Eigentlich hatte ich nur vor, eine Kombination von Filtern so anzuwenden, so daß ich einen kachelbaren Hintergrund kriege, meist so für 80x80 Tiles.
Habe dann einen Artikel von loxi über elektrische Schafe gelesen, und das hat mich dann inspiriert, den Script weiterzuentwickeln.

(define (script-fu-wrapMagic image
drawable
moveMode
spice
distort
whirlStrength
alternate
blurMode
blurStrength
blurDir
sharpen
color
edge)

(gimp-image-undo-disable image)
(set! moveRateX 1)
(set! moveRateY 1)
(if (= moveMode 0) (set! moveRateX 3))
(if (= moveMode 0) (set! moveRateY 2))
(if (= moveMode 1) (set! moveRateX 5))
(if (= moveMode 1) (set! moveRateY 3))
(if (= moveMode 2) (set! moveRateX 7))
(if (= moveMode 2) (set! moveRateY 5))
(if (= moveMode 3) (set! moveRateX 11))
(if (= moveMode 3) (set! moveRateY 5))
(if (= moveMode 4) (set! moveRateX 11))
(if (= moveMode 4) (set! moveRateY 7))
(if (= moveMode 5) (set! moveRateX 13))
(if (= moveMode 5) (set! moveRateY 7))
(if (= moveMode 6) (set! moveRateX 13))
(if (= moveMode 6) (set! moveRateY 11))

(if (or (= spice 0) (= spice 1) (= spice 2)) (set! spicex 17))
(if (or (= spice 3) (= spice 4) (= spice 7)) (set! spicex 19))
(if (or (= spice 5) (= spice 8)) (set! spicex 23))
(if (or (= spice 9)) (set! spicex 29))
(if (or (= spice 10)) (set! spicex 31))

(if (or (= spice 0)) (set! spicey 17))
(if (or (= spice 1)) (set! spicey 19))
(if (or (= spice 2) (= spice 3)) (set! spicey 23))
(if (or (= spice 4) (= spice 5) (= spice 6)) (set! spicey 29))
(if (or (= spice 7) (= spice 8) (= spice 9) (= spice 10)) (set! spicey 31))

(if (= blurDir 0) (set! mDir 90))
(if (= blurDir 1) (set! mDir 45))
(if (= blurDir 2) (set! mDir 135))
(if (= blurDir 3) (set! mDir 270))

(set! whirl 180)
(if (= distort 1) (set! whirl 45))
(if (= distort 2) (set! whirl 90))
(if (= distort 3) (set! whirl 135))
(if (= distort 4) (set! whirl 180))
(if (= distort 5) (set! whirl 225))
(if (= distort 6) (set! whirl 270))
(if (= distort 7) (set! whirl 315))
(if (= distort 8) (set! whirl 360))

(set! movesTotal (* moveRateX moveRateY))
(set! moveLoop 0)

(set! usizex (car (gimp-image-width image)))
(set! usizey (car (gimp-image-height image)))


(set! mStrong (/ (+ usizex usizey) 4))
(set! mMedium (/ (+ usizex usizey) 10))
(set! mWeak (/ (+ usizex usizey) 25))
(set! mVeryWeak (/ (+ usizex usizey) 50))
(set! wStrong (/ (+ usizex usizey) 100))
(set! wMedium (/ (+ usizex usizey) 300))
(set! wWeak (/ (+ usizex usizey) 600))
(set! usizexm (/ usizex 6))
(set! usizeym (/ usizey 6))
(set! usizexm2 (/ usizex 3))
(set! usizeym2 (/ usizey 3))
(set! usizexm1 (/ usizex 2))
(set! usizeym1 (/ usizey 2))

(set! mx (* (/ usizex moveRateX) spicex))
(set! my (* (/ usizey moveRateY) spicey))

(while (< moveLoop movesTotal)
(gimp-selection-none image)
(if (and (< 0 distort) (< distort 9))
(begin
(plug-in-whirl-pinch 1 image drawable whirl 0 whirlStrength)
))

(if (= alternate TRUE) (set! whirl (- 0 whirl)))

(if (or (= distort 9) (< 0 blurMode 1))
(begin
(gimp-rect-select image usizexm usizeym (- usizex usizexm2) (- usizey usizeym2) 2 0 0)
(set! selectionChannel (car (gimp-image-get-selection image)))
(plug-in-gauss 1 image selectionChannel usizexm1 usizeym1 1)
(plug-in-c-astretch 1 image selectionChannel)
(gimp-levels selectionChannel 0 128 255 1 0 (+ 155 (* 10 blurStrength)))
))

(if (= distort 9) (gimp-hue-saturation drawable 0 45 0 0))

(if (= blurMode 1) (plug-in-mblur 1 image drawable 0 mVeryWeak mDir 0 0))
(if (= blurMode 2) (plug-in-mblur 1 image drawable 0 mWeak mDir 0 0))
(if (= blurMode 3) (plug-in-mblur 1 image drawable 0 mMedium mDir 0 0))
(if (= blurMode 4) (plug-in-mblur 1 image drawable 0 mStrong mDir 0 0))
(if (= blurMode 5) (plug-in-wind 1 image drawable 0 0 wWeak 0 0))
(if (= blurMode 6) (plug-in-wind 1 image drawable 0 0 wMedium 0 0))
(if (= blurMode 7) (plug-in-wind 1 image drawable 0 0 wStrong 0 0))

(if (= sharpen 1) (plug-in-unsharp-mask 1 image drawable 2 0.5 0))
(if (= sharpen 2) (plug-in-unsharp-mask 1 image drawable 2 1 0))
(if (= sharpen 3) (plug-in-unsharp-mask 1 image drawable 2 2 0))
(if (= sharpen 4) (plug-in-unsharp-mask 1 image drawable 2 3 0))
(if (= sharpen 5) (plug-in-unsharp-mask 1 image drawable 3 1 0))
(if (= sharpen 6) (plug-in-unsharp-mask 1 image drawable 3 2 0))
(if (= sharpen 7) (plug-in-unsharp-mask 1 image drawable 3 3 0))

(gimp-selection-none image)
(if (= color 0) (gimp-levels-stretch drawable))
(if (= color 1) (plug-in-c-astretch 1 image drawable))
(if (= color 2) (plug-in-color-enhance 1 image drawable))
(if (= color 3) (plug-in-autostretch-hsv 1 image drawable))
(gimp-drawable-offset drawable 1 1 mx my)

(set! moveLoop (+ moveLoop 1))
)

(if (or (< 0 edge 1))
(begin
(set! edgelayer1 (car (gimp-layer-copy drawable 0)))
(gimp-image-add-layer image edgelayer1 -1)
(plug-in-c-astretch 1 image edgelayer1)
(plug-in-edge 1 image edgelayer1 1 0 1)
(gimp-invert edgelayer1)
(set! edgelayer2 (car (gimp-layer-copy drawable 0)))
(gimp-image-add-layer image edgelayer2 -1)
(plug-in-c-astretch 1 image edgelayer2)
(plug-in-edge 1 image edgelayer2 2 0 1)
(gimp-invert edgelayer2)
(set! edgelayer3 (car (gimp-layer-copy drawable 0)))
(gimp-image-add-layer image edgelayer3 -1)
(plug-in-c-astretch 1 image edgelayer3)
(plug-in-edge 1 image edgelayer3 10 0 1)
(gimp-invert edgelayer3)
))
(gimp-image-undo-enable image)
(gimp-image-clean-all image)
(gimp-displays-flush)
)



(script-fu-register "script-fu-wrapMagic"
_"<Image>/Script-Fu/Alchemy/wrap-magic..."
"Wraps Image"
"Mathias"
"Mathias"
"14/05/04"
"RGB*"
SF-IMAGE "Image" 0
SF-DRAWABLE "Drawable" 0
SF-OPTION _"Moves" ' (_"3-2"
_"5-3 time for a coffee"
_"7-5 get lots of cookies and coffee"
_"11-5 take a long nap"
_"11-7 take a really long nap"
_"13-7 are you sure about this"
_"13-11 you are gone nuts"
)
SF-OPTION _"Spices" ' (_"17-17"
_"17-19"
_"17-23"
_"19-23"
_"19-29"
_"23-29"
_"29-29"
_"19-31"
_"23-31"
_"29-31"
_"31-31"
)
SF-OPTION _"Whirl etc" ' (_"None"
_"Whirl 45"
_"Whirl 90"
_"Whirl 135"
_"Whirl 180"
_"Whirl 225"
_"Whirl 270"
_"Whirl 315"
_"Whirl 360"
_"Hue"
)

SF-ADJUSTMENT _"Whirl Strength" '(1 0.1 1 0.1 0.1 1 0)
SF-TOGGLE _"Whirl Alternate" TRUE
SF-OPTION _"Blur" ' (_"None"
_"weakest mBlur"
_"easy mBlur"
_"medium mBlur"
_"strong mBlur"
_"weak wind"
_"medium wind"
_"strong wind"
)
SF-ADJUSTMENT _"StrengthBlur" '(10 0 10 1 1 0 0)
SF-OPTION _"MotionBlur" ' (_"up"
_"up left"
_"up right"
_"down"
)
SF-OPTION _"Sharpen" ' (_"None"
_"2-0.5"
_"2-1"
_"2-2"
_"2-3"
_"3-1"
_"3-2"
_"3-3"
)
SF-OPTION _"Contrast" ' (_"levels stretch (most beautyful)"
_"c-stretch (fine, prefer level stretch)"
_"color-enhance (weak)"
_"hsv-stretch (less color, more contrast)"
_"none"
)
SF-OPTION _"Edge-Effect" ' (_"none"
_"edges"
)

)

Dirk S
28.01.2005, 15:49
Erst einmal vielen Dank für das Skript.

Ich habe aber mal eine Frage. Bei den Bilder die ich bisher gemacht habe, ist immer nur noch das Hitergrundbild vorhanden. Jetzt habe ich mal eins rechnen lassen und das hat 4 Ebenen.
Wie kommt das?

Gruss

Dirk

flashnfantasy
28.01.2005, 16:12
@Dirk S
Der letzte Parameter 'Edges' macht drei weitere Ebenen aus dem Ergebniss des Scriptes.
Mit diesen Ebenen kann man das Hintergrundbild etwas aufpeppen.
Da es dabei aber aber tausende von Möglichkeiten gibt, habe ich einfach mal die Ebenen so stehen lassen, und jeder kann selbst experimentieren.

Übrigens gibt es zu dem Script einen Thread für die Ergebnisse
http://gimpforum.de/ftopic1171.html

Hans
28.01.2005, 22:12
.... Jetzt habe ich mal eins rechnen lassen und das hat 4 Ebenen.....Und genau das habe ich bei dem von Flashfantasy angegebenen Link ausgenutzt. Ebenen nach Belieben aus/eingeblendet und am Ebenenmodus und der Transparenz rumgespielt. Alle drei Bilder sind aus dem gleichen XCF File entstanden.

Hans

flashnfantasy
29.01.2005, 19:49
@Hans
Habe den neuen Script fertig, folgende Wünsche habe ich irgendwie eingebracht.
- Im Ebenendialog und er Fußleiste des Bildes wird eingeblendet, bei welchem Schritt man ist.
- Man kann jeden einzelnen Schritt abspeichern. Das passiert aber immer unter dem gleichen Filenamen warp-1xxxx.tif. Die 1xxxx ist nur, damit alle Filenamen korrekt geordnet werden.
- Die wichtigsten Parameter werden zum Schluß in den Ebenendialog eingeblendet.

Dazu gibt es jetzt noch folgenden sehr interessanten Parameter: Whirl Selection schränkt den Bereich des Wirbels ein. Mal ausprobieren - ich erziele tolle Ergebnisse bei 0.8.
StrengthBlur gibt die Stärke des Bewegungsweichzeichners an. Meist lasse setze ich ihn auf den Wert 0.
BlurArea gibt den Bereich an, auf den die Bewegungsunschärfe wirken soll. Eigentlich lasse ich ihn immer auf 3.


; The GIMP -- an image manipulation program

(define (script-fu-wrapMagic2 image
drawable
moveMode
spice
distort
whirlSel
whirlStrength
alternate
blurStrength
blurRate
blurDir
sharpen
color
edge
saveLayer
path)

(gimp-image-undo-disable image)
(set! moveRateX 1)
(set! moveRateY 1)
(if (= moveMode 0) (set! moveRateX 3))
(if (= moveMode 0) (set! moveRateY 2))
(if (= moveMode 1) (set! moveRateX 5))
(if (= moveMode 1) (set! moveRateY 3))
(if (= moveMode 2) (set! moveRateX 7))
(if (= moveMode 2) (set! moveRateY 5))
(if (= moveMode 3) (set! moveRateX 11))
(if (= moveMode 3) (set! moveRateY 5))
(if (= moveMode 4) (set! moveRateX 11))
(if (= moveMode 4) (set! moveRateY 7))
(if (= moveMode 5) (set! moveRateX 13))
(if (= moveMode 5) (set! moveRateY 7))
(if (= moveMode 6) (set! moveRateX 13))
(if (= moveMode 6) (set! moveRateY 11))

(if (or (= spice 0) (= spice 1) (= spice 2)) (set! spicex 17))
(if (or (= spice 3) (= spice 4) (= spice 7)) (set! spicex 19))
(if (or (= spice 5) (= spice 8)) (set! spicex 23))
(if (or (= spice 9)) (set! spicex 29))
(if (or (= spice 10)) (set! spicex 31))

(if (or (= spice 0)) (set! spicey 17))
(if (or (= spice 1)) (set! spicey 19))
(if (or (= spice 2) (= spice 3)) (set! spicey 23))
(if (or (= spice 4) (= spice 5) (= spice 6)) (set! spicey 29))
(if (or (= spice 7) (= spice 8) (= spice 9) (= spice 10)) (set! spicey 31))

(if (= blurDir 0) (set! mDir 90))
(if (= blurDir 1) (set! mDir 45))
(if (= blurDir 2) (set! mDir 135))
(if (= blurDir 3) (set! mDir 270))

(set! whirl 0)
(if (= distort 1) (set! whirl 45))
(if (= distort 2) (set! whirl 90))
(if (= distort 3) (set! whirl 135))
(if (= distort 4) (set! whirl 180))
(if (= distort 5) (set! whirl 225))
(if (= distort 6) (set! whirl 270))
(if (= distort 7) (set! whirl 315))
(if (= distort 8) (set! whirl 360))

(set! movesTotal (* moveRateX moveRateY))
(set! moveLoop 0)

(set! usizex (car (gimp-image-width image)))
(set! usizey (car (gimp-image-height image)))


(set! mBlur 0)
(set! mBlur (* (/ (+ usizex usizey) 1500) blurStrength))
(set! usizexm (* (/ usizex 21) blurRate))
(set! usizeym (* (/ usizey 21) blurRate))
(set! usizexm2 (- usizex (* 2 usizexm)))
(set! usizeym2 (- usizey (* 2 usizeym)))
(set! usizexm1 (/ usizex 5))
(set! usizeym1 (/ usizey 5))


(set! xm (* (/ usizex 20) whirlSel))
(set! ym (* (/ usizey 20) whirlSel))

(set! xm2 (- usizex (* 2 xm)))
(set! ym2 (- usizey (* 2 ym)))

(set! mx (* (/ usizex moveRateX) spicex))
(set! my (* (/ usizey moveRateY) spicey))

(while (< moveLoop movesTotal)
(gimp-selection-none image)
(if (= saveLayer 2)
(begin
(set! drawable (car (gimp-layer-copy drawable 0)))
(gimp-image-add-layer image drawable -1)
))

(if (and (< 0 distort) (< distort 9))
(begin
(gimp-rect-select image xm ym xm2 ym2 2 0 0)
(plug-in-whirl-pinch 1 image drawable whirl 0 whirlStrength)
))

(if (= alternate TRUE) (set! whirl (- 0 whirl)))


(gimp-rect-select image usizexm usizeym usizexm2 usizeym2 2 0 0)
(set! selectionChannel (car (gimp-image-get-selection image)))
(plug-in-gauss 1 image selectionChannel usizexm1 usizeym1 1)
(plug-in-c-astretch 1 image selectionChannel)

(if (= distort 9) (gimp-hue-saturation drawable 0 15 0 0))

(if (< 0 mBlur) (plug-in-mblur 1 image drawable 0 mBlur mDir 0 0))

(if (= sharpen 1) (plug-in-unsharp-mask 1 image drawable 2 0.5 0))
(if (= sharpen 2) (plug-in-unsharp-mask 1 image drawable 2 1 0))
(if (= sharpen 3) (plug-in-unsharp-mask 1 image drawable 2 2 0))
(if (= sharpen 4) (plug-in-unsharp-mask 1 image drawable 2 3 0))
(if (= sharpen 5) (plug-in-unsharp-mask 1 image drawable 3 1 0))
(if (= sharpen 6) (plug-in-unsharp-mask 1 image drawable 3 2 0))
(if (= sharpen 7) (plug-in-unsharp-mask 1 image drawable 3 3 0))

(gimp-selection-none image)
(if (= color 0) (gimp-levels-stretch drawable))
(if (= color 1) (plug-in-c-astretch 1 image drawable))
(if (= color 2) (plug-in-color-enhance 1 image drawable))
(if (= color 3) (plug-in-autostretch-hsv 1 image drawable))

(if (= saveLayer 1) (file-tiff-save 1 image drawable (string-append path "/warp-" (number->string (+ 10000 moveLoop)) ".tif") "" 0))

(gimp-drawable-offset drawable 1 1 mx my)

(set! moveLoop (+ moveLoop 1))

(gimp-layer-set-name drawable (string-append "Loop " (number->string moveLoop) "/" (number->string movesTotal)))
)

(if (or (< 0 edge 1))
(begin
(set! edgelayer1 (car (gimp-layer-copy drawable 0)))
(gimp-image-add-layer image edgelayer1 -1)
(plug-in-c-astretch 1 image edgelayer1)
(plug-in-edge 1 image edgelayer1 1 0 1)
(gimp-invert edgelayer1)
(set! edgelayer2 (car (gimp-layer-copy drawable 0)))
(gimp-image-add-layer image edgelayer2 -1)
(plug-in-c-astretch 1 image edgelayer2)
(plug-in-edge 1 image edgelayer2 2 0 1)
(gimp-invert edgelayer2)
(set! edgelayer3 (car (gimp-layer-copy drawable 0)))
(gimp-image-add-layer image edgelayer3 -1)
(plug-in-c-astretch 1 image edgelayer3)
(plug-in-edge 1 image edgelayer3 10 0 1)
(gimp-invert edgelayer3)
))
(if (< whirl 0) (set! whirl (- 0 whirl)))
(gimp-layer-set-name drawable (string-append "Moves " (number->string moveRateX) "," (number->string moveRateY) "\nSpice " (number->string spicex) "," (number->string spicey) "\nWhirl " (number->string whirl) "\nWhirl Strength " (number->string whirlStrength) "\nAlternate " (number->string alternate) "\nWhirl Selection " (number->string whirlSel) "\nStrengthBlur " (number->string blurStrength) "\nblurArea " (number->string blurRate) "\n"))
(gimp-image-undo-enable image)
(gimp-image-clean-all image)
(gimp-displays-flush)
)



(script-fu-register "script-fu-wrapMagic2"
_"<Image>/Script-Fu/Alchemy/wrap-magic2..."
"Wraps Image"
"Mathias"
"Mathias"
"14/05/04"
"RGB*"
SF-IMAGE "Image" 0
SF-DRAWABLE "Drawable" 0
SF-OPTION _"Moves" ' (_"3-2"
_"5-3 time for a coffee"
_"7-5 get lots of cookies and coffee"
_"11-5 take a long nap"
_"11-7 take a really long nap"
_"13-7 are you sure about this"
_"13-11 you are gone nuts"
)
SF-OPTION _"Spices" ' (_"17-17"
_"17-19"
_"17-23"
_"19-23"
_"19-29"
_"23-29"
_"29-29"
_"19-31"
_"23-31"
_"29-31"
_"31-31"
)
SF-OPTION _"Whirl etc" ' (_"None"
_"Whirl 45"
_"Whirl 90"
_"Whirl 135"
_"Whirl 180"
_"Whirl 225"
_"Whirl 270"
_"Whirl 315"
_"Whirl 360"
_"Hue"
)

SF-ADJUSTMENT _"Whirl Selection" '(0 0 9 1 1 0 0)
SF-ADJUSTMENT _"Whirl Strength" '(1 0 1 0.1 0.1 1 0)
SF-TOGGLE _"Whirl Alternate" TRUE
SF-ADJUSTMENT _"StrengthBlur" '(1 0 50 1 1 0 0)
SF-ADJUSTMENT _"BlurArea" '(3 3 10 1 1 0 0)
SF-OPTION _"MotionBlur" ' (_"up"
_"up left"
_"up right"
_"down"
)
SF-OPTION _"Sharpen" ' (_"None"
_"2-0.5"
_"2-1"
_"2-2"
_"2-3"
_"3-1"
_"3-2"
_"3-3"
)
SF-OPTION _"Contrast" ' (_"levels stretch (most beautyful)"
_"c-stretch (fine, prefer level stretch)"
_"color-enhance (weak)"
_"hsv-stretch (less color, more contrast)"
_"none"
)
SF-OPTION _"Edge-Effect" ' (_"none"
_"edges"
)
SF-OPTION _"Layer Save" ' (_"none"
_"in File"
_"own Layer (makes your Memory gobble)"
)
SF-STRING _"File-Path" gimp-directory
)

Hans
30.01.2005, 00:11
Hi Flash, mein Prozzi glüht schon

Sieht alles ganz gut aus. Die Einstellungen speicherst du zum Schluss im Ebenennamen. Finde ich nicht so prickelnd. Alternativ vieleicht eine eigene Ebene bilden, und die Einstellungen da reinkritzeln.

Das mit den Schritten zwischenspeichern klappt auch allerbestens.

Bei dein Einstellungen musst du langsam aufpassen. Du kannst zwar sehr viel einstellen fast schon zuviel. Man läuft Gefahr, dass zuviel Schuss produziert wird, weil viele Kombinationen kein brauchbares Ergebnis bringen, besonders beim ersten Kontakt mit deinem Tool.

Trotzdem, gute Arbeit!

Hans

Dookie
30.01.2005, 00:52
Hi Flash,

also das neueste script gefällt mir auch nicht so gut, ist IMHO schon überfrachtet und ich bekam beim ersten Test gar kein Ergebnis nach den Berechnungen.
Wie Hans schon sagt auch das schreiben der Einstellungen in den Ebenennamen stört, haut das ganze Layout von Gimp bei mir durcheinander.
Ansonst tolle arbeit.

Gruß

Dookie

flashnfantasy
30.01.2005, 11:59
OK, habe den Script bereinigt und das mit den Ebenennamen so geändert, daß man das als eigene Ebene hat.

Auch ist es jetzt so, daß der Script in der Defaulteinstellung schon munter drauf losmischt.

Hinweis Man kriegt manchmal verschiedene Muster, wenn man RateX und RateY verändert.
Die Wahrscheinlichkeit dafür steigt, je mehr Wirbel man nimmt.
Und - Whirl-Selection auf eine Zahl größer 7 bewirkt kleine Wirbel, die schneller zu berechnen sind, sollte man auch mal versuchen...



(define (script-fu-wrapMagicEasy image
drawable
moveMode
rateX
rateY
distort
whirlSel
alternate
blurStrength
blurRate
edge
saveLayer
path)

(gimp-image-undo-disable image)
(set! moveRateX 1)
(set! moveRateY 1)
(if (= moveMode 0) (set! moveRateX 3))
(if (= moveMode 0) (set! moveRateY 2))
(if (= moveMode 1) (set! moveRateX 3))
(if (= moveMode 1) (set! moveRateY 3))
(if (= moveMode 2) (set! moveRateX 5))
(if (= moveMode 2) (set! moveRateY 3))
(if (= moveMode 3) (set! moveRateX 5))
(if (= moveMode 3) (set! moveRateY 5))
(if (= moveMode 4) (set! moveRateX 7))
(if (= moveMode 4) (set! moveRateY 5))
(if (= moveMode 5) (set! moveRateX 7))
(if (= moveMode 5) (set! moveRateY 7))

(if (= rateX 0) (set! spicex 11))
(if (= rateX 1) (set! spicex 13))
(if (= rateX 2) (set! spicex 17))
(if (= rateX 3) (set! spicex 23))
(if (= rateX 4) (set! spicex 29))
(if (= rateX 5) (set! spicex 31))
(if (= rateY 0) (set! spicey 11))
(if (= rateY 1) (set! spicey 13))
(if (= rateY 2) (set! spicey 17))
(if (= rateY 3) (set! spicey 23))
(if (= rateY 4) (set! spicey 29))
(if (= rateY 5) (set! spicey 31))
(if (= spicex spicey) (set! spicey 1))

(set! mDir 45)

(set! whirl 180)
(if (= distort 1) (set! whirl 225))
(if (= distort 2) (set! whirl 270))
(if (= distort 3) (set! whirl 315))
(if (= distort 4) (set! whirl 360))
(if (= distort 5) (set! whirl 135))
(if (= distort 6) (set! whirl 90))
(if (= distort 7) (set! whirl 45))

(set! movesTotal (* moveRateX moveRateY))
(set! moveLoop 0)

(set! usizex (car (gimp-image-width image)))
(set! usizey (car (gimp-image-height image)))

;(set! blurRate 1)
(set! mBlur 0)
(set! mBlur (* (/ (+ usizex usizey) 1500) blurStrength))
(set! usizexm (* (/ usizex 41) blurRate))
(set! usizeym (* (/ usizey 41) blurRate))
(set! usizexm2 (- usizex (* 2 usizexm)))
(set! usizeym2 (- usizey (* 2 usizeym)))
(set! usizexm1 (/ usizex 2))
(set! usizeym1 (/ usizey 2))


(set! xm (* (/ usizex 20) whirlSel))
(set! ym (* (/ usizey 20) whirlSel))

(set! xm2 (- usizex (* 2 xm)))
(set! ym2 (- usizey (* 2 ym)))

(set! mx (* (/ usizex moveRateX) spicex))
(set! my (* (/ usizey moveRateY) spicey))

(while (< moveLoop movesTotal)
(gimp-selection-none image)
(if (= saveLayer 2)
(begin
(set! drawable (car (gimp-layer-copy drawable 0)))
(gimp-image-add-layer image drawable -1)
))

(if (< distort 8)
(begin
(gimp-rect-select image xm ym xm2 ym2 2 0 0)
(plug-in-whirl-pinch 1 image drawable whirl 0 1)
))

(if (= alternate TRUE) (set! whirl (- 0 whirl)))


(if (or (< 0 blurStrength) (= distort 8))
(begin
(gimp-rect-select image usizexm usizeym usizexm2 usizeym2 2 0 0)
(set! selectionChannel (car (gimp-image-get-selection image)))
(plug-in-gauss 1 image selectionChannel usizexm1 usizeym1 1)
(gimp-levels selectionChannel 0 128 255 1 0 255)
;(gimp-posterize selectionChannel 4)
(plug-in-c-astretch 1 image selectionChannel)
))

(if (= distort 8) (gimp-hue-saturation drawable 0 15 0 0))

(if (< 0 mBlur) (plug-in-mblur 1 image drawable 0 mBlur mDir 0 0))

(gimp-selection-none image)
(gimp-levels-stretch drawable)

(if (= saveLayer 1) (file-tiff-save 1 image drawable (string-append path "/warp-" (number->string (+ 10000 moveLoop)) ".tif") "" 0))

(gimp-drawable-offset drawable 1 1 mx my)

(set! moveLoop (+ moveLoop 1))

(gimp-layer-set-name drawable (string-append "Loop " (number->string moveLoop) "/" (number->string movesTotal)))
)

(if (< 0 edge)
(begin
(set! edgelayer1 (car (gimp-layer-copy drawable 0)))
(gimp-image-add-layer image edgelayer1 -1)
(plug-in-c-astretch 1 image edgelayer1)
(plug-in-edge 1 image edgelayer1 1 0 1)
(gimp-invert edgelayer1)
(set! edgelayer2 (car (gimp-layer-copy drawable 0)))
(gimp-image-add-layer image edgelayer2 -1)
(plug-in-c-astretch 1 image edgelayer2)
(plug-in-edge 1 image edgelayer2 2 0 1)
(gimp-invert edgelayer2)
(set! edgelayer3 (car (gimp-layer-copy drawable 0)))
(gimp-image-add-layer image edgelayer3 -1)
(plug-in-c-astretch 1 image edgelayer3)
(plug-in-edge 1 image edgelayer3 10 0 1)
(gimp-invert edgelayer3)
))
(if (< whirl 0) (set! whirl (- 0 whirl)))

(set! descr (string-append "Moves " (number->string movesTotal) "\nRateX,Y " (number->string spicex) "," (number->string spicey) "\nWhirl " (number->string whirl) "\nAlternate " (number->string alternate) "\nWhirl Selection " (number->string whirlSel) "\nStrengthBlur " (number->string blurStrength) "\nAreaBlur " (number->string blurRate)))
(set! ddimendiv (/ (car (gimp-image-height image)) 15))
(if (< 12 ddimendiv) (set! ddimendiv 12))
(set! fontdim (gimp-text-get-extents-fontname descr ddimendiv 0 "Courier New Bold"))
(set! fontdimx (car fontdim))
(set! fontdimy (cadr fontdim))
(set! descrx (- (car (gimp-image-width image)) fontdimx))
(set! descry (- (car (gimp-image-height image)) fontdimy))
(set! descrx 10)

(gimp-palette-set-foreground '(0 0 0))
(set! tlayer (car (gimp-layer-new image (car (gimp-image-width image)) (car (gimp-image-height image)) 1 "tlayer" 100 0)))
(gimp-image-add-layer image tlayer 0)
(gimp-drawable-fill tlayer 3)
(gimp-palette-set-foreground '(255 255 255))
(set! textlayer (car (gimp-text-fontname image -1 descrx descry descr 0 TRUE ddimendiv 0 "Courier New Bold")))
(set! textlayer2 (car (gimp-layer-copy textlayer 1)))
(gimp-layer-set-mode textlayer2 6)
(gimp-image-add-layer image textlayer2 0)
(set! textlayer (car (gimp-image-merge-down image textlayer 0)))
(plug-in-gauss-iir2 1 image textlayer ddimendiv ddimendiv)
(plug-in-c-astretch 0 image textlayer)
(gimp-levels textlayer 0 0 64 1.0 0 255)
(gimp-levels textlayer 4 0 32 1.0 0 255)
;(set! layerResult (car (gimp-image-merge-down image textlayer 0)))
(set! layerResult (car (gimp-image-merge-down image textlayer2 0)))

(gimp-image-set-active-layer image drawable)
(gimp-image-undo-enable image)
(gimp-image-clean-all image)
(gimp-displays-flush)
)



(script-fu-register "script-fu-wrapMagicEasy"
_"<Image>/Script-Fu/Alchemy/wrap-magicEasy..."
"Wraps Image"
"Mathias"
"Mathias"
"14/05/04"
"RGB*"
SF-IMAGE "Image" 0
SF-DRAWABLE "Drawable" 0
SF-OPTION _"Number of Whirls" ' (_"6"
_"9 still goes easy"
_"15 time for a coffee"
_"25 time for some more coffee"
_"35 get lots of cookies and coffee"
_"49 take a long nap"
)
SF-OPTION _"RateX" ' (_"11" _"13" _"17" _"19" _"23" _"29" _"31")
SF-OPTION _"RateY" ' (_"11" _"13" _"17" _"19" _"23" _"29" _"31")
SF-OPTION _"Whirl etc" ' (_"Whirl 180"
_"Whirl 225"
_"Whirl 270"
_"Whirl 315"
_"Whirl 360"
_"Whirl 135"
_"Whirl 90"
_"Whirl 45"
_"Hue"
)

SF-ADJUSTMENT _"Whirl Selection\nBigger Number means\nsmaller Whirls" '(0 0 9 1 1 0 0)
SF-TOGGLE _"Whirl Alternate" TRUE
SF-ADJUSTMENT _"StrengthBlur\n0 means no Blur" '(0 0 300 10 10 0 0)
SF-ADJUSTMENT _"AreaBlur\n1 biggest Area" '(1 1 15 1 1 0 0)
SF-OPTION _"Edge-Effect" ' (_"none"
_"edges"
)
SF-OPTION _"Layer Save" ' (_"none"
_"in File"
_"own Layer (makes your Memory gobble)"
)
SF-STRING _"File-Path" gimp-directory
)

Dookie
30.01.2005, 19:30
Schön, so ist das Script echt brauchbar :)

Gruß

Dookie

Hans
30.01.2005, 20:45
Jepp hast recht. Mein Prozessor hat gerade schon mal vorbeigeschaut und nachgefragt was da eigentlich los ist :lol:

Bin schon den ganzen Nachmittag am "wirbeln"

Hans

flashnfantasy
01.02.2005, 17:43
Habe den letzten abgespeckten Script überarbeitet, waren einige Fehler drinnen, und einige Parameter waren von ihren Grenzen zu eng gefasst.

Zudem konnte es unter bestimmten Umständen die Kachelbarkeit verloren gehen.

Also den Script 'wrapMagicEasy' unbedingt überschreiben

Der verbesserte Script erzeugt viel schönere Bilder.

Egin
01.02.2005, 19:22
hm, also ich hab dein tolles script jetzt als scm gespeichert, aber wie kann ich das unter gimp finden ? das ist nirgens im filtertab zu finden :oops:

lox2eagle
01.02.2005, 19:27
(...)
(script-fu-register "script-fu-wrapMagicEasy"
_"<Image>/Script-Fu/Alchemy/wrap-magicEasy..."
(...)

da stehts, hehe...

Gruß, Loxi

xpsmart
01.02.2005, 19:46
Hallo,
ist echt super das Skript, nur eine Frage, bei mir werden die Ausgangsfarben
geändert, d. h. ich habe z.B. rot und schwarz drin obwohl ich nur grüntöne verwendet habe. Ist das so, oder liegt das an einer Einstellung, oder sonst an was?

flashnfantasy
02.02.2005, 06:58
Nach jedem Schritt wird eine Kontrastverstärkung aller einzelner Farbkanäle durchgeführt.
Das ist notwendig, weil sich ansonsten alle Farben zu einem Farbton durchmischen und man ansonsten nachher ein fast einfarbiges Bild hätte.

Bei der Kontrastverstärkung kann es passieren, daß man dann neue Farben dazukriegt und eventuell vom Endbild der Farbton ganz anders aussieht.

Man kann das ein wenig verhindern, indem man von einem Farbkanal nur eine Farbe nimmt:
zB Rot und Weiß ergibt ein Gemisch aus Rot, Cyan (Komplement zu Rot) und Weiß und Schwarz.
Es darf nicht mal Rot mit einer minimalen Nuance Gelb sein, weil das schon zwei Kanäle sind - damit wird der dritte Farbkanal schon rekonstruiert.

Übrigens wird der Alpha-Kanal auch mitgemischt und verstärkt.
Mal ganz interessant, auf einer tranparenten Layer ein paar Farbkleckse zu geben und dann kräftig mischen...