Polskie Forum Użytkowników GIMP-a

Ogólne dyskusje => GIMP - pomoc => Wątek zaczęty przez: DekoGlas on 04.09.2016, 15:29:35



Tytuł: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: DekoGlas on 04.09.2016, 15:29:35
Dzień dobry,

mam 900 plików png o rozmiarze 200 px x 200 px. Mam też jeden plik o wymiarach 1000 px x 1000 px, który ma służyć jako tło dla tych PNG. Szukam funkcji batchowej podobnej do dodawania znaku wodnego, tyle że swój plik chcę podłożyc pod obrazki, a nie na nie nałożyć.

Grzebałem dziś w BIMPie, ale nie udało mi się niczego wykombinować. Czy ktoś wie, jak sobie poradzić z problemem? Nie dysponuję Photoshopem, pracuję na darmowym oprogramowaniu.


Tytuł: Odp: Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: be@ on 04.09.2016, 15:34:43
http://www.gimpuj.info/index.php/topic,52460.0.html + http://www.gimpuj.info/index.php/topic,34874.0.html


Tytuł: Odp: Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: DekoGlas on 04.09.2016, 15:50:36
Be@, dziękuję za szybką odpowiedź, ale to chyba nie na moje pytanie.

Mam 900 odrębnych plików PNG, a nie 900 warstw, z których chcę zrobić pliki.


Tytuł: Odp: Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: be@ on 04.09.2016, 15:58:46
A jaki to problem otworzyć wszystkie te pliki jako warstwy, podłożyć tło skryptem z pierwszego odnośnika i wyeksportować każdą warstwę do osobnego pliku za pomocą tego drugiego skryptu?


Tytuł: Odp: Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: Hasia on 04.09.2016, 15:59:04
Jeśli otworzysz ten plik png i te 900 jako warstwy i użyjesz najpierw skryptu do łączenia warstw a później do eksportu warstw jako oddzielne pliki, wtedy powinieneś otrzymać to o czym mówisz. Jedyne czym martwiłabym się, to to czy GIMP pociągnie obraz, który ma 900 warstw, dlatego radziłabym otwierać je tak mniej więcej po 100.


Tytuł: Odp: Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: DekoGlas on 04.09.2016, 18:05:35
Dziękuję! Udało się.
Do wyżej wymienionych skryptów dociągnałem jeszcze sg-dissolve-group.scm ( https://www.gimpuj.info/index.php/topic,62176.msg287065.html#msg287065 ) dla rozgrupowania warstw. Musiałem wcześniej pogrupować tych 1600 (!) warstw, żeby je wspólnie za jednym razem przesunąć w kadrze (nie chciałem ich po środku tła).

Udało się za jednym zamachem wtopić 1600 (a nie 900, jak błędnie podałem) obrazków w tło. Zajęło to godzinę, wykorzystałem 6 GB z dostępnych 8 GB pamięci i 60 % procesora, ale efekt jest rewelacyjny.
Ślicznie Wam dziękuję za podpowiedź.



Tytuł: Odp: Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: be@ on 04.09.2016, 18:12:51
Grupowanie nie było konieczne. Wystarczyło w oknie warstw kliknąć w ikonę łańcucha z wciśniętym SHIFT-em, aby połączyć wszystkie warstwy. Tak połączone można przesuwać.


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: DekoGlas on 12.07.2017, 18:45:57
Chętnie zamówię skrypt wsadowy, który będzie to robił automatycznie.


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: be@ on 13.07.2017, 09:43:16
Czyli chcesz skrypt, który będzie otwierać tło, następnie otwierać zdjęcie jako warstwę i ustawiać ją w określonym położeniu, po czym eksportować do PNG, usuwać warstwę ze zdjęciem i otwierać następną fotkę, ustawiać w wybranym miejscu, eksportować itd.?


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: DekoGlas on 14.07.2017, 06:23:59
Mniej więcej. Uszczegółowię.

Skrypt, który:
1. otwiera tło (np. background.jpg; np. 1500 x 1500 px),
2. otwiera wcześniej przygotowane zdjęcie PNG (np. 0001.png z zachowanym kawałkiem przezroczystości dlatego png; np. 500 x 500 px) jako warstwę widoczną nad tłem,
3. ustawia ją w określonym położeniu,
4. łączy obie warstwy, po czym eksport do JPG z nazwą 0001.jpg (a nie z nazwą tła),
5. usuwa warstwę ze zdjęciem i otwiera następną fotkę (0002.png),
... i jak wyżej nawet dla kilku tysięcy zdjęć.



Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: be@ on 14.07.2017, 07:18:06
Nie można usunąć warstwy po jej połączeniu z tłem. Trzeba by się cofać w historii. Poza tym po co chcesz łączyć obie warstwy? Przecież to nie robi żadnej różnicy. Bez względu na to, czy warstwy zostaną połączone czy nie, po wyeksportowaniu do JPG obraz będzie wyglądać tak samo, więc jest to krok całkowicie zbędny.


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: DekoGlas on 14.07.2017, 11:17:49
Jeśli po eksporcie będą połączone, to wystarczy.
Teraz kwestia ceny. :-)


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: be@ on 14.07.2017, 11:32:08
A to już musisz z Ziomioslawem gadać, bo to on pisze skrypty :)
W każdym razie potrzebne są jeszcze współrzędne położenia tego zdjęcia, skoro ma zostać umieszczone w wybranym miejscu, a nie jest to środek obrazu.


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: Ziomioslaw on 14.07.2017, 13:13:59
Co właściwie znaczy "3. ustawia ją w określonym położeniu"? czy chodzi o jakieś stałe wartości?


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: Ziomioslaw on 14.07.2017, 19:28:25
Zerknij na to:

Kod:
; taken from: https://stackoverflow.com/questions/1386293/how-to-parse-out-base-file-name-using-script-fu
(define (morph-filename orig-name new-extension)
    (let* ((buffer (vector "" "" "")))
        (if (re-match "^(.*)[.]([^.]+)$" orig-name buffer)
            (string-append (substring orig-name 0 (car (vector-ref buffer 2))) new-extension)
        )
    )
)

(define (batch-put-images-on-background file-pattern background picture-x picture-y)
(let* (
        (filelist (cadr (file-glob file-pattern 1)))
      )

      (while (not (null? filelist))
          (let* (
                    (filename (car filelist))
                    (output-file-name (morph-filename filename "jpg"))
                    (image (car (gimp-file-load RUN-NONINTERACTIVE background background)))
                    (drawable (car (gimp-image-get-active-layer image)))
                    (temp-layer (car (gimp-file-load-layer RUN-NONINTERACTIVE image filename)))
                )

                (gimp-image-add-layer image temp-layer -1)
                (gimp-layer-set-offsets temp-layer picture-x picture-y)
                (gimp-image-flatten image)

                (gimp-file-save
                    RUN-NONINTERACTIVE
                    image
                    (car (gimp-image-get-active-layer image))
                    output-file-name
                    output-file-name
                )

                (gimp-image-delete image)
          )
          (set! filelist (cdr filelist))
      )
))

Wywołuje się to:

Kod:
gimp -i -b '(batch-put-images-on-background "*.png" "background.jpg" 30 70)' -b '(gimp-quit 0)'


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: DekoGlas on 15.07.2017, 11:52:59
Co właściwie znaczy "3. ustawia ją w określonym położeniu"? czy chodzi o jakieś stałe wartości?

Tak i nie.
Dziś mam do nałożenia na tło 1000 obrazków w miejscu o współrzędnych x, y.
Ale kolejnego dnia mam inne zadanie i 2000 innych obrazków muszę nałożyć na inne tło w innym miejscu o współrzędnych a, b.


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: DekoGlas on 15.07.2017, 11:57:17
...
W każdym razie potrzebne są jeszcze współrzędne położenia tego zdjęcia, skoro ma zostać umieszczone w wybranym miejscu, a nie jest to środek obrazu.

Otóż to. jednego dnia będą to współrzędne x, y. Za miesiąc a, b.


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: Ziomioslaw on 15.07.2017, 12:59:15
To w takim razie dobrze zrobiłem, że uczyniłem położenie obrazka na tle parametrami.


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: Ziomioslaw on 17.09.2019, 22:39:01
Prześlij nam PW.


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: DekoGlas on 19.09.2019, 19:14:25
Panel wiadomości PW nie działa, Pana prywatny mail na jabber też nie.


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: Ziomioslaw on 20.09.2019, 09:19:53
Dostałem PW, odpisałem nawet.
Czemu nie działa PW?


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: DecoCat on 15.09.2021, 16:39:42
Dzień dobry,

czy ktoś zechciałby mi powiedzieć, wskazać link, jak skorzystać z tego typu skryptu?

Cytuj
Wywołuje się to:

[code]gimp -i -b '(batch-put-images-on-background "*.png" "background.jpg" 30 70)' -b '(gimp-quit 0)'

Gdzie wkleić skrypt? W jakiej postaci? Czy będzie dostępny z poziomu menu? Potrzebuje instrukcji krok po kroku.
Pozdrawiam



Zerknij na to:

[code]; taken from: https://stackoverflow.com/questions/1386293/how-to-parse-out-base-file-name-using-script-fu
(define (morph-filename orig-name new-extension)


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: be@ on 15.09.2021, 18:47:25
Wkleić do notatnika i zapisać z rozszerzeniem SCM, a następnie wrzucić do folderu scripts


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: DecoCat on 15.09.2021, 19:48:57
Be@, dziękuję, a gdzie się wywołuje?

1. Wkleić do notatnika i zapisać z rozszerzeniem SCM, a następnie wrzucić do folderu scripts
2. Wywołuje się to:
Kod:
gimp -i -b '(batch-put-images-on-background "*.png" "background.jpg" 30 70)' -b '(gimp-quit 0)'
3. A gdzie się wywołuje?


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: be@ on 15.09.2021, 19:52:44
Skrypt po prostu pojawi się w menu, jeśli będzie prawidłowo zapisany. Ew. trzeba odświeżyć skrypty albo zrestartować program jeśli był włączony podczas dodawania skryptu. Nigdy nie pamiętam, jakie trzeba wybrać kodowanie podczas zapisu, ale chyba UTF-8


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: DecoCat on 15.09.2021, 20:20:58
Ok, po prostu pojawi się w menu. To po co jest wywołanie, o którym pisze Ziomioslaw? I gdzie to wywołać?
Kod:
gimp -i -b '(batch-put-images-on-background "*.png" "background.jpg" 30 70)' -b '(gimp-quit 0)'


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: be@ on 15.09.2021, 20:23:04
A to Ziomioslawa pytaj, ale wątpię, żeby odpowiedział cokolwiek zrozumiałego ;)


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: DecoCat on 15.09.2021, 21:48:30
A to Ziomioslawa pytaj, ale wątpię, żeby odpowiedział cokolwiek zrozumiałego ;)

Właśnie jego pytam. :)


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: DecoCat on 15.09.2021, 23:01:37
Be@, w takim układzie zapytam inaczej. Jest na forum ktoś inny, kto pociągnie temat równie dobrze, ale czasowo sprawniej niż Ziomioslaw?


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: be@ on 16.09.2021, 08:39:57
Były tu osoby znające się na skryptowaniu, ale od dłuższego czasu nie zaglądają na forum :(
Możesz spróbować wysłać pw np. do POGO czy MareroQ, albo jeśli znasz angielski, to zapytaj na forum gimpchat.com. MareroQ też tam urzęduje ;)


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: be@ on 16.09.2021, 09:28:11
Wydaje mi się, że to wywołanie trzeba wpisać w konsolę:

(https://i.ibb.co/X2Z2TDb/2021-09-16-102922.png)


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: DecoCat on 16.09.2021, 17:29:31
Ślicznie dziękuję za cenne wskazówki!


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: Ziomioslaw on 16.09.2021, 19:12:06
Ok, po prostu pojawi się w menu. To po co jest wywołanie, o którym pisze Ziomioslaw? I gdzie to wywołać?
Kod:
gimp -i -b '(batch-put-images-on-background "*.png" "background.jpg" 30 70)' -b '(gimp-quit 0)'

Przecież to wywołanie z powłoki systemowej. To co się popularnie nazywa konsolą.


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: DecoCat on 16.09.2021, 19:21:27
Dzięki.


Tytuł: Odp: [ROZ] Nakładanie kilkuset plików PNG na jedno i to samo tło
Wiadomość wysłana przez: DecoCat on 16.09.2021, 19:38:15
Be@, niestety MareroQ był tu ostatnio dokładnie pięć lat temu, a Pogo 3 lata temu. :(