Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?


Zaloguj się podając nazwę użytkownika, hasło i długość sesji

Polskie Forum Użytkowników GIMP-aDodatkiSzukamWątek: [ROZ] potrzebny skrypt do wykonania prostych działań na 50 klatkach.
Strony: [1]
DrukujPobierz PDF
Autor Wątek: [ROZ] potrzebny skrypt do wykonania prostych działań na 50 klatkach.  (Przeczytany 5156 razy)
0 użytkowników i 1 Gość przegląda ten wątek.
psorek
Użytkownik

Reputacja: 0 Offline Offline

Płeć: Mężczyzna
GIMP: 2.6 + GAP
Licencja: Copyright
Wiadomości: 95
Galeria Użytkownika



Zobacz profil
« : 22.07.2010, 18:04:39 »

wejście:
warstwa1

działanie:
skopiować warstwę1 do warstwy2
sprowadzić na warstwie2 kolor czarny do alfy
skopiować warstwę2 do warstwy3
zastosować na warstwie2 rozmycie gussa (wys, szer 10)
rozmyć promieniście (130 długości) warstwę3
skopiować warstwę3 do 3 takich warstw
spłaszczyć obraz

wyjście:
efekt działania skryptu zapisany na wejściowej warstwie


Muszę te operacje wykonać na kolejnych 50 warstwach, więc ręcznie jest ciężko. Z moich informacji wynika że skryptem plus narzędzie "filter all layers" będzie prościej. Uda się coś takiego wykonać?
« Ostatnia zmiana: 07.08.2010, 11:34:34 wysłane przez Ziomioslaw » Zapisane
Rodez
Użytkownik

Reputacja: 2 Offline Offline

Płeć: Mężczyzna
GIMP: 2.6
Licencja: Copyright
Wiadomości: 209
Galeria Użytkownika



Zobacz profil
« Odpowiedz #1 : 23.07.2010, 19:36:51 »

Spokojnie, trochę wytrwałości... jest kilka osób, które umieją pisać skrypty, ale nawet one potrzebują na to trochę czasu jeśli już...
Zapisane

Ziomioslaw
Administrator

Reputacja: 46 Offline Offline

Płeć: Mężczyzna
GIMP: 2.10
JID: ziomioslaw@jabber.org
Licencja: Copyright
Wiadomości: 7 432
Galeria Użytkownika


Cyklista Apokalipsy


Zobacz profil
« Odpowiedz #2 : 23.07.2010, 23:27:45 »

spłaszczyć obraz

Dla 50 warstw to i tak będzie jeden przebieg:)
Zapisane
psorek
Użytkownik

Reputacja: 0 Offline Offline

Płeć: Mężczyzna
GIMP: 2.6 + GAP
Licencja: Copyright
Wiadomości: 95
Galeria Użytkownika



Zobacz profil
« Odpowiedz #3 : 01.08.2010, 19:46:13 »

ech, chodziło mi o połączenie dwóch warstw.
Zapisane
Ziomioslaw
Administrator

Reputacja: 46 Offline Offline

Płeć: Mężczyzna
GIMP: 2.10
JID: ziomioslaw@jabber.org
Licencja: Copyright
Wiadomości: 7 432
Galeria Użytkownika


Cyklista Apokalipsy


Zobacz profil
« Odpowiedz #4 : 02.08.2010, 22:16:07 »

Albo sam zaczniesz to pisać, albo poczekasz do weekendu.
Zapisane
psorek
Użytkownik

Reputacja: 0 Offline Offline

Płeć: Mężczyzna
GIMP: 2.6 + GAP
Licencja: Copyright
Wiadomości: 95
Galeria Użytkownika



Zobacz profil
« Odpowiedz #5 : 03.08.2010, 07:21:48 »

Mogę czekać, nie spieszy mi się.
Zapisane
Ziomioslaw
Administrator

Reputacja: 46 Offline Offline

Płeć: Mężczyzna
GIMP: 2.10
JID: ziomioslaw@jabber.org
Licencja: Copyright
Wiadomości: 7 432
Galeria Użytkownika


Cyklista Apokalipsy


Zobacz profil
« Odpowiedz #6 : 03.08.2010, 19:34:14 »

skopiować warstwę3 do 3 takich warstw
spłaszczyć obraz

A po co właściwie to 3 kopiować?
Zapisane
psorek
Użytkownik

Reputacja: 0 Offline Offline

Płeć: Mężczyzna
GIMP: 2.6 + GAP
Licencja: Copyright
Wiadomości: 95
Galeria Użytkownika



Zobacz profil
« Odpowiedz #7 : 04.08.2010, 10:34:25 »

żeby wzmocnić efekt jaki ma dać ta warstwa.
Zapisane
Ziomioslaw
Administrator

Reputacja: 46 Offline Offline

Płeć: Mężczyzna
GIMP: 2.10
JID: ziomioslaw@jabber.org
Licencja: Copyright
Wiadomości: 7 432
Galeria Użytkownika


Cyklista Apokalipsy


Zobacz profil
« Odpowiedz #8 : 05.08.2010, 18:57:48 »

Dodałem Ci też funkcję, która wywołuje tą metodę dla wszystkich warstw obrazka.
Mam nadziej, że dobrze zrozumiałem co chciałeś uzyskać.

Kod:
(define (script-fu-raw-fun-with-layer image drawable)
 (let* (
(layer-top (car (gimp-image-get-layer-position image drawable)))
(layer2 0)
(layer3 0)
 )
(gimp-image-undo-group-start image)
; skopiować warstwę1 do warstwy2
(set! layer2 (car (gimp-layer-copy drawable TRUE)))
(gimp-image-add-layer image layer2 layer-top)
; skopiować warstwę2 do warstwy3
(set! layer3 (car (gimp-layer-copy layer2 TRUE)))
(gimp-image-add-layer image layer3 layer-top)
; sprowadzić na warstwie2 kolor czarny do alfy
(plug-in-colortoalpha RUN-NONINTERACTIVE image layer2 '(0 0 0))
; zastosować na warstwie2 rozmycie gussa (wys, szer 10)
(plug-in-gauss RUN-NONINTERACTIVE image layer2 10 10 0)
; rozmyć promieniście (130 długości) warstwę3
(plug-in-mblur RUN-NONINTERACTIVE image layer3 0 130 10 0 0)

(gimp-image-merge-down image layer2 0)
; skopiować warstwę3 do 3 takich warstw i spłaszczyć obraz
(set! layer2 (car (gimp-layer-copy layer3 TRUE)))
(gimp-image-add-layer image layer2 (+ layer-top 1))
(gimp-image-merge-down image layer2 0)
(set! layer2 (car (gimp-layer-copy layer3 TRUE)))
(gimp-image-add-layer image layer2 (+ layer-top 1))
(gimp-image-merge-down image layer2 0)
(gimp-image-merge-down image layer3 0)
(gimp-image-undo-group-end image)
 )
)

(define (script-fu-fun-with-all-layers image drawable)
 (let* (
(layers (cadr (gimp-image-get-layers image)))
(layers-count (car (gimp-image-get-layers image)))
(i 0)
 )
(while (< i layers-count)
(script-fu-raw-fun-with-layer image (aref layers i))
(set! i (+ i 1))
) ; BŁĄD: w funkcji raw nie warstwy są w złych miejscach wyświetlane.
 )
)

(define (script-fu-fun-with-layer image drawable)
(script-fu-raw-fun-with-layer image drawable)
(gimp-displays-flush)
)

(script-fu-register "script-fu-fun-with-layer"
 _"<Image>/Script-Fu/Zabawa na jednej warstwie"
 _"Wykonuje szereg operacji na wybranej warstwie: kopiuje warstwę do warstwy2, sprowadza na warstwie2 kolor czarny do alfy, kopiuje warstwę2 do warstwy3,
stosuje na warstwie2 rozmycie gussa (wys, szer 10), rozmywa warstwę3 promieniście (130 długości), kopiuje warstwę3 do 3 takich warstw, sprowadza wszystko do jednej warstwy."
 "Ziomioslaw (ziomioslaw@wp.pl)"
 "Ziomioslaw"
 "2010-08-04"
 "*"
 SF-IMAGE        "Image"     0
 SF-DRAWABLE     "Drawable"  0
)

(script-fu-register "script-fu-fun-with-all-layers"
 _"<Image>/Script-Fu/Zabawa na wszystkich warstwach"
 _"Wykonuje 'Zabawę na jednej warstwie' na wszystkich warstwach obrazka."
 "Ziomioslaw (ziomioslaw@wp.pl)"
 "Ziomioslaw"
 "2010-08-05"
 "*"
 SF-IMAGE        "Image"     0
 SF-DRAWABLE     "Drawable"  0
)
Zapisane
psorek
Użytkownik

Reputacja: 0 Offline Offline

Płeć: Mężczyzna
GIMP: 2.6 + GAP
Licencja: Copyright
Wiadomości: 95
Galeria Użytkownika



Zobacz profil
« Odpowiedz #9 : 06.08.2010, 09:29:48 »

Hehe wielkie dzięki. Jest tylko jeden problem: zastosowałeś rozmycie w ruchu a nie promieniste, ale jestem jednak programistą i się dokopię co zmienić. Przy okazji może kiedyś... Może nauczę się pisać skrypty w tym języku.


edit:
Kod:
(define (script-fu-raw-fun-with-layer image drawable)
 (let* (
(layer-top (car (gimp-image-get-layer-position image drawable)))
(layer2 0)
(layer3 0)
 )
(gimp-image-undo-group-start image)
; skopiować warstwę1 do warstwy2
(set! layer2 (car (gimp-layer-copy drawable TRUE)))
(gimp-image-add-layer image layer2 layer-top)
; sprowadzić na warstwie2 kolor czarny do alfy
(plug-in-colortoalpha RUN-NONINTERACTIVE image layer2 '(0 0 0))
; skopiować warstwę2 do warstwy3
(set! layer3 (car (gimp-layer-copy layer2 TRUE)))
(gimp-image-add-layer image layer3 layer-top)
; zastosować na warstwie2 rozmycie gussa (wys, szer 10)
(plug-in-gauss RUN-NONINTERACTIVE image layer2 10 10 0)
; rozmyć promieniście (130 długości) warstwę3
(plug-in-mblur RUN-NONINTERACTIVE image layer3 2 130 10 200 200)

(gimp-image-merge-down image layer2 0)
; skopiować warstwę3 do 3 takich warstw i spłaszczyć obraz
(set! layer2 (car (gimp-layer-copy layer3 TRUE)))
(gimp-image-add-layer image layer2 (+ layer-top 1))
(set! layer2 (car (gimp-layer-copy layer3 TRUE)))
(gimp-image-add-layer image layer2 (+ layer-top 1))
(gimp-image-undo-group-end image)
 )
)

(define (script-fu-fun-with-all-layers image drawable)
 (let* (
(layers (cadr (gimp-image-get-layers image)))
(layers-count (car (gimp-image-get-layers image)))
(i 0)
 )
(while (< i layers-count)
(script-fu-raw-fun-with-layer image (aref layers i))
(set! i (+ i 1))
) ; BŁĄD: w funkcji raw nie warstwy są w złych miejscach wyświetlane.
 )
)

(define (script-fu-fun-with-layer image drawable)
(script-fu-raw-fun-with-layer image drawable)
(gimp-displays-flush)
)

(script-fu-register "script-fu-fun-with-layer"
 _"<Image>/Script-Fu/Zabawa na jednej warstwie"
 _"Wykonuje szereg operacji na wybranej warstwie: kopiuje warstwę do warstwy2, sprowadza na warstwie2 kolor czarny do alfy, kopiuje warstwę2 do warstwy3,
stosuje na warstwie2 rozmycie gussa (wys, szer 10), rozmywa warstwę3 promieniście (130 długości), kopiuje warstwę3 do 3 takich warstw, sprowadza wszystko do jednej warstwy."
 "Ziomioslaw (ziomioslaw@wp.pl)"
 "Ziomioslaw"
 "2010-08-04"
 "*"
 SF-IMAGE        "Image"     0
 SF-DRAWABLE     "Drawable"  0
)

(script-fu-register "script-fu-fun-with-all-layers"
 _"<Image>/Script-Fu/Zabawa na wszystkich warstwach"
 _"Wykonuje 'Zabawę na jednej warstwie' na wszystkich warstwach obrazka."
 "Ziomioslaw (ziomioslaw@wp.pl)"
 "Ziomioslaw"
 "2010-08-05"
 "*"
 SF-IMAGE        "Image"     0
 SF-DRAWABLE     "Drawable"  0
)

Trochę przerobiłem.
Mógłbyś tylko napisać, jak scalić potem te warstwy w jedną? Jest to niezbędne dla mnie.
« Ostatnia zmiana: 06.08.2010, 11:26:38 wysłane przez psorek » Zapisane
Ziomioslaw
Administrator

Reputacja: 46 Offline Offline

Płeć: Mężczyzna
GIMP: 2.10
JID: ziomioslaw@jabber.org
Licencja: Copyright
Wiadomości: 7 432
Galeria Użytkownika


Cyklista Apokalipsy


Zobacz profil
« Odpowiedz #10 : 06.08.2010, 19:20:24 »

Scalają się w jedną, potem możesz nawet ręcznie użyć opcji "scal widoczne".
Zapisane
psorek
Użytkownik

Reputacja: 0 Offline Offline

Płeć: Mężczyzna
GIMP: 2.6 + GAP
Licencja: Copyright
Wiadomości: 95
Galeria Użytkownika



Zobacz profil
« Odpowiedz #11 : 07.08.2010, 09:10:14 »

warstwa1 scala się z warstwą2, ale 3 kopie warstwy3 pozostają luźne. Co do opcji "scal widoczne", to u mnie nie da się jej zastosować. (widoczne są fragmenty niższych warstw, a to ma być potem animacja gif.)


EDIT:
już działa. Kiedy modyfikowałem wcześniej skrypt, usunąłem przypadkiem jedną linijkę. Jest dobrze.
Zapisane
Strony: [1]
DrukujPobierz PDF
Polskie Forum Użytkowników GIMP-aDodatkiSzukamWątek: [ROZ] potrzebny skrypt do wykonania prostych działań na 50 klatkach.
Skocz do: