Tytuł: FAQ Skrypciarza GIMPowego Wiadomość wysłana przez: Ziomioslaw on 23.11.2007, 13:59:06 Pytania filozoficzne (pytania ogólne) Scheme? Ki diabeł? Scheme, to dialekt LISPa, jest on nieco inny niż C, C++, Pascal itp ... (jeśli ktoś zna te języki). Ale do prostych skryptów nie powinno być problemów. http://pl.wikipedia.org/wiki/Scheme Scheme, dziwne to takie, czemu akurat on?! Szczerze, to nie wiem. LISP jest dość popularny (no był w każdym razie), zwłaszcza wtedy. Jest używany jako język skryptowy w innych znanych aplikacji. Podejrzewam, że programiści GIMPa znali i lubili LISPa, a Scheme był wtedy na tyle popularny, że postanowili go w GIMPie wkompilować. Wszystkie inne języki skryptowe do GIMPa wymagają dodatkowych wtyczek, lub obecności dodatkowych programów w systemie. Gdzie mogę poczytać o Scheme'ie? http://www.gimpuj.info/scriptfus-plugins/liniki-do-tutoriali-na-temat-skryptowania-t3811.0.html Czemu na forum nie ma żadnych tutków do Schema? Bo po co przepisywać coś, co już na necie jest? (patrz wyżej) Czy skrypty GIMPa można pisać w innych (niż Scheme) językach? Tak, można np.: w Perlu, Pythonie - to chyba najpopularniejsze (nie licząc Scheme) - można też w C#, Tcl czy Ruby'im (dwóch ostatnich jeszcze w użyciu nie widziałem, ale wierzę w ich istnienie:P) Ale skąd mam znać te wszystkie funkcje GIMPa? Od tego jest "Przeglądarka procedur" - znajdziesz ją w Dodatkach (na głównym panelu programu). Poczytałem tutoriale o Scheme'ie, chciałbym coś więcej się pouczyć. Pobierz więc już napisane skrypty i oglądaj ich kod. Skąd je brać?:P Heh - a w jakim dziale jesteś? Jak zainstalować Python-Fu? W Linuksie prawdopodobnie już będzie zainstalowany razem z GIMPem - Python jest na dzień dobry w większości dystrybucji. W Windowsie w czasie instalacji GIMPa należy wybrać opcję "Zaawansowana instalcja", a wtedy w okienku zaznaczyć opcję obsługi skryptów Python - tutaj mała uwaga - trzeba mieć zainstalowanego Pythona w odpowiedniej wersji. A mojego pytania tutaj nie ma! Dopisz je poniżej, a doda się je. Wersja tego FAQ v. 0.10 z dnia 2010.06.06 Pytania, które mogą pojawić się przy uruchamianiu swoich, jak i cudzych skryptów. Napisałem (mam) skrypt do wersji 2.2, ale w nie działa on w wersji 2.4 Spróbuj tutaj poszukać pomocy: http://www.gimp.org/docs/script-fu-update.html Mam GIMPa 2.6 i pojawia mi się błąd: "Error: Bad syntax of binding spec in let*:" Jeśli składnia jest poprawna, pamiętaliśmy o dodatkowej parze nawiasów, a mimo wszystko dalej mamy problem, to został on wyjaśniony np. tu: http://gimp.org/release-notes/gimp-2.6.html Jeżeli w skrypcie, w sekcji let* znajdują się deklaracje zmiennych, nie zainicjowanych (czyli wpisu typu: "(zmienna)"), np. jak tu: Kod: (let* ( Kod: (let* ( Pytania, które pojawią się w akcie tworzenia. Poprawiłem swój skrypt, zapisałem plik, jednak GIMP jakby tego nie zauważył. Skrypty należy odświeżyć (Dodatki->Script-Fu->Odśwież skrypty) Przy odświeżanie skryptów, lub ich ładowaniu dostaje komunikat: "Error: syntax error: illegal token" Błąd składniowy, czyli gdzieś brakuje domknięcia nawiasu, lub tych domknięć jest za dużo - przydał bv się edytor, który wyszukuje nawias domykający do danego. Chciałbym wstawiać polskie znaczki w komentarzach i tekstach ale GIMP ich nie "trawi" Zapisz plik skryptu jako UTF8. Pojawia mi się "Error: Invalid type for argument", a przecież dobrze wprowadziłem argument. Wyjaśnię na przykładzie, wyświetlamy nowo utworzony obrazek, piszemy więc zgodnie z opisem funkcji z "Przeglądarki procedur" Kod: (gimp-display-new (gimp-image-new 100 100 RGB)) Kod: (gimp-display-new (car (gimp-image-new 100 100 RGB))) Pojawił mi się "Error: eval: unbound variable: [nazwa]" Czyli wykorzystujemy nie znaną wcześniej zmienną - najczęściej literówka przy nazwach zmiennych lub funkcji. Uwaga: jeśli posługujesz się starym tutorialem, edytujesz stare wersje skryptów, być może masz problem, który został opisany w pytaniu: "Napisałem (mam) skrypt do wersji 2.2, ale w nie działa on w wersji 2.4". Gdzie mogę znaleźć opisy atrybutu SF-ADJUSTMENT oraz innych? Zajrzyj do zewnętrznych tutorialów Script-Fu. Poniżej podaje przykładowe linki do dokumentacji online GIMPa (język angielski) rozdział 3.4.7: http://docs.gimp.org/2.6/en/gimp-using-script-fu-tutorial-first-script.html#id2590535 Jak przeliczyć wymiary obrazka, jeśli chcemy skalować go proporcjonalnie, do zadanej np. szerokości? To kwestia prostej proporcji. Proporcja wymiarów obrazka głównego to np. szerokość / wysokość = "nowa szerokość" / "nowa wysokość" Oczywiście można też spojrzeć nieco inaczej: wysokość / szerokość = "nowa wysokość" / "nowa szerokość" Wymieramy sobie który wzór nam pasuje i wyliczamy wymiar którego nie mamy. Dla przykładu, "nową szerokość": "nowa szerokość" = (szerokość / wysokość) * "nowa wysokość" Proste co nie? Analogicznie "nowa wysokość" wynosi: "nowa wysokość" = wysokość / szerokość * "nowa szerokość" W kodzie ostatni wzór wygląda następująco: Kod: (set! new-tmp-height (* new-tmp-width (/ (car (gimp-drawable-height drawable)) (car (gimp-drawable-width drawable))))) Użyto tutaj funkcji gimp-drawable-height i gimp-drawable-width służących do pobierania wymiarów istniejącej warstwy. Mam obraz (IMAGE), jak pobrać warstwę (DARWABLE) dla niego? Można użyć funkcji spłaszczającej: gimp-image-flatten. Np.: Kod: (darwable (car (gimp-image-flatten image))) Kod: (darwable (car (gimp-image-get-active-layer image))) Jak pogrupować instrukcje skryptu w jedną w podglądzie zmian (przy cofaniu) Należy użyć dwóch poniższych funkcji. Jako parametr przyjmują obraz (IMAGE). Kod: (gimp-image-undo-group-start image) Obraz po ukończeniu skryptu jest nieodświeżony To zupełnie normalne, należy obraz odświeżyć ręcznie - służy do tego funkcja gimp-displays-flush. Kod: (gimp-displays-flush) Jak sprawdzić, czy listy są takie same? Złożone obiekty porównuje się przy użyciu funkcji equal?. Tytuł: Odp: FAQ Skrypciarza GIMPowego Wiadomość wysłana przez: Sebastian on 19.10.2008, 13:07:16 Dopiero zaczynam pisać skrypty i natrafiłem na parę problemów, jeden już co prawda rozwiązałem, ale drugi to dalej problem.
1 - Gdzie mogę znaleźć opisy atrybutu SF-ADJUSTMENT oraz innych? Znalazłem to: Cytuj SF-ADJUSTMENT "SF-ADJUSTMENT (slider)" '( 30 1 2000 1 10 1 0) SF-ADJUSTMENT "SF-ADJUSTMENT" '(400 1 2000 1 10 1 1) Okej ale za co odpowiadają konkretnie te właściwości. W przeglądarce tego nie ma a w sieci też znajduje tylko pytania podobne do mojego. Co prawda mogę po trochu sam to rozpracować ale gdybyś był tak miły i opisał mi te atrybuty to byłbym bardzo wdzięczny :). 2 - Cytuj Pojawił mi się "Error: eval: unbound variable: [nazwa]" Czyli wykorzystujemy nie znaną wcześniej zmienną - najczęściej literówka przy nazwach zmiennych lub funkcji. Wydaje mi się że nie tylko dlatego może wywalać taki błąd: Cytuj By far, the most common problem that can be expected if using an older script is that it might assign a value to a variable without first declaring the variable. SIOD-based Script-fu would permit a statement such as (set! x 4) even if 'x' had not been declared -- 'x' would be defined automatically to be a global variable. The new Script-fu protects against this situation and the programmer must declare the variable first. The offending script would result in an error message stating, "Error: set!: unbound variable: x". The use of global variables is generally discouraged because another function (written by a different author) may have chosen to use the same name and the two functions would interfere with each other. For this reason, the correct method of declaring 'x' in the preceding example is to use the let or let* statement: (let* ( (x 4) ) ... ... ... ) Mi wywalało taki błąd i to mnie poratowało, można by to dopisać do FAQ. Tytuł: Odp: FAQ Skrypciarza GIMPowego Wiadomość wysłana przez: Ziomioslaw on 19.10.2008, 15:18:57 Ad. 1
W tutorialach do Schema -> linki w wątku obok. Ad. 2 Tak, wiem, ale to występuje tylko przy starych skryptach i w zasadzie sprawdza się do używania nieznanej zmiennej. Tytuł: Odp: FAQ Skrypciarza GIMPowego Wiadomość wysłana przez: krzysiek1311 on 06.11.2009, 23:31:54 w jaki sposób można dodać pluginy do Gimpa.
Tytuł: Odp: FAQ Skrypciarza GIMPowego Wiadomość wysłana przez: Ziomioslaw on 06.11.2009, 23:35:42 w jaki sposób można dodać pluginy do Gimpa. 1. Ten wątek dotyczy Script-Fu 2. Ten wątek bardziej pisania skryptów niż podstaw (od nich jest FAQ) 3. Odpowiedź znajdziesz w wielu miejscach, m.in. w swoim katalogu GIMPa - folder o wdzięcznej nazwie "plug-ins", albo w forumowym FAQ. Tytuł: przykłady z oficjalnego tutoriala Wiadomość wysłana przez: ciepły on 12.09.2013, 18:14:23 chciałem napisać jak się zdaje prosty skrypt, który zrobi pasek postępu na obrazku
(przkład: http://i1328.photobucket.com/albums/w538/cieply/Blade_progress__palace_back_zps718197e3.jpg (http://i1328.photobucket.com/albums/w538/cieply/Blade_progress__palace_back_zps718197e3.jpg)) tyle, że takich pasków trzeba 50 sztuk bo to będzie wrzucone do bmp2avi więc ręczna robótka odpada i zacząłem czytać podstawy Scheme i przepisywać oficjalne tutoriale żeby nie było przepisałem je z oficjalnego tutoriala i... cóż, jakoś nie działają i nie bardzo wiadomo o co chodzi # @ http://www.gimp.org/tutorials/Basic_Scheme2/index.html > (set! a 5) Error: (<unknown> : 21524835) set!: unbound variable: a > (set! b '(1 2 3)) Error: (<unknown> : 21530020) set!: unbound variable: b gdzie w tym samym tutku jest napisane, że set! jest odpowiednikiem przypisania - a co ja niby robię - przypisuję: a := 5 ( w bardziej ogólnej notacji) to samo z let: # let > (let* c 2) Error: (<unknown> : 21505965) Bad syntax of binding spec in let* : c > (let* c (2)) Error: (<unknown> : 21508499) Bad syntax of binding spec in let* : c > (let* c '(2) ) Error: (<unknown> : 21515263) Bad syntax of binding spec in let* : c # może coś bardziej życiowego... # znowu przykład z http://www.gimp.org/tutorials/Basic_Scheme2/index.html > (set! image (car (gimp-image-new 320 240 RGB))) Error: (<unknown> : 21507235) set!: unbound variable: image nawet tak prosta rzecz jak: > (set! x 20) Error: (<unknown> : 21504945) set!: unbound variable: x # na www.gimp.org/tutorials jest link do http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme-Z-H-7.html gdzie też tak jest napisane i to nie działa kopanie w internecie nie bardzo mi pomogło, znalazłem tylko to: http://www.gimptalk.com/index.php?/topic/32537-help-with-an-error-on-my-script-fu-script/ (http://www.gimptalk.com/index.php?/topic/32537-help-with-an-error-on-my-script-fu-script/) oni też nie wiedzą co z tym zrobić Tytuł: Odp: FAQ Skrypciarza GIMPowego Wiadomość wysłana przez: Ziomioslaw on 12.09.2013, 21:59:48 składania let* to
Kod: (let* ( Generalnie najłatwiej to chyba jednak pisać w pliku. Tytuł: let, set, bla, bla Wiadomość wysłana przez: ciepły on 13.09.2013, 13:02:14 > Generalnie najłatwiej to chyba jednak pisać w pliku.
pewnie tak, tylko co ja tam zobaczę, a tak wiem co się dzieje nie umiem się inaczej uczyć, pewnie dlatego wciąż używam borlanda 3.1 - tam jest najlepszy debugger/inspect jest jeszcze python, nie wiem na ile skomplikowany ale może byłby łatwiejszy Tytuł: Odp: FAQ Skrypciarza GIMPowego Wiadomość wysłana przez: Ziomioslaw on 13.09.2013, 18:17:43 Dużo łatwiejszy, zwłaszcza dla początkujących.
|