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-aOgólne dyskusjePomocna dłońGIMP - pomoc (Moderator: be@)Wątek: Hurtowe dodawanie tla (scalanie) do zdjęć
Strony: [1]
DrukujPobierz PDF
Autor Wątek: Hurtowe dodawanie tla (scalanie) do zdjęć  (Przeczytany 1541 razy)
0 użytkowników i 1 Gość przegląda ten wątek.
oinisco
Nowicjusz

Reputacja: 0 Offline Offline

Wiadomości: 3
Galeria Użytkownika

oinisco


Zobacz profil
« : 03.10.2024, 08:11:15 »

Witam,

zazwyczaj korzystam z FastStone Photo Resizer do hurtowej obróbki zdjęć jednak jest jedna funkcja, której on nie ma.

Posiadam kilkaset zdjęć, niewielkich rozmiarów i chciałbym nałożyć je na większe tło. Np obrazek który ma 400x400px chciałbym nałożyć na inny, większy o wymiarach 500x500px tworząc jak gdyby swoją ramkę. Operację tę chciałbym wykonać hurtowo, a większy obrazek (ten służący jako tło/ramka) byłby zawsze identyczny. Czy GIMP pozwoli wykonać mi taką operację "w miarę" hurtowo na plikach .jpg?

Dziękuję.
Rafał
Zapisane
be@
Moderator globalny

Reputacja: 49 Offline Offline

Płeć: Kobieta
GIMP: 2.8
Licencja: CC-BY
Wiadomości: 7 420
Galeria Użytkownika



Zobacz profil
« Odpowiedz #1 : 03.10.2024, 10:34:41 »

Będzie potrzebny plugin BIMP: https://www.gimpuj.info/index.php?topic=68664.0
Zapisane
oinisco
Nowicjusz

Reputacja: 0 Offline Offline

Wiadomości: 3
Galeria Użytkownika

oinisco


Zobacz profil
« Odpowiedz #2 : 04.10.2024, 13:59:19 »

Zainstalowałem dodatek - dziękuję. Zapoznałem się z litą procedur, ale nie ma tam takich oczywistych jak np "paste".

Czy masz pomysł jak ustawić te procedury? Przypomnę, chciałbym na duży kwadratowy obrazek (zawsze ten sam, jako tło) dodać mniejszy. I tutaj już te mniejsze będą różnej wielkości. Wszystko wyśrodkowane w pionie i poziomie.
Zapisane
be@
Moderator globalny

Reputacja: 49 Offline Offline

Płeć: Kobieta
GIMP: 2.8
Licencja: CC-BY
Wiadomości: 7 420
Galeria Użytkownika



Zobacz profil
« Odpowiedz #3 : 04.10.2024, 14:05:31 »

Tu już chyba trzeba zapytać użytkownika Zbyma72age
Zapisane
Ziomioslaw
Administrator

Reputacja: 46 Offline Offline

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


Cyklista Apokalipsy


Zobacz profil
« Odpowiedz #4 : 04.10.2024, 18:17:42 »

Ja bym sugerował użycie skryptu:

Kod:
(define (batch-center-on-background background-file input-file output-file)
(let* (
    (input-image (car (gimp-file-load RUN-NONINTERACTIVE input-file input-file)))
    (background-image (car (gimp-file-load RUN-NONINTERACTIVE background-file background-file)))
    (input-layer (car (gimp-image-get-active-layer input-image)))
    (bg-width (car (gimp-image-width background-image)))
    (bg-height (car (gimp-image-height background-image)))
    (input-width (car (gimp-image-width input-image)))
    (input-height (car (gimp-image-height input-image)))
    (x-pos (/ (- bg-width input-width) 2))
    (y-pos (/ (- bg-height input-height) 2))
  )

  (gimp-edit-copy input-layer)
  (let* (
      (new-layer (car (gimp-layer-new background-image bg-width bg-height RGBA-IMAGE "Layer" 100 NORMAL-MODE)))
    )

    (gimp-image-add-layer background-image new-layer -1)
    (gimp-image-set-active-layer background-image new-layer)
    (gimp-edit-paste new-layer TRUE)
    (gimp-layer-set-offsets new-layer x-pos y-pos)
    (gimp-floating-sel-anchor (car (gimp-image-get-active-layer background-image)))
  )

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

  (gimp-image-delete input-image)
  (gimp-image-delete background-image)
))

(define (filename-from-path path)
  (car (reverse (strbreakup path "/")))
)

(define (basename-from-filename file-name)
  (car (strbreakup file-name "."))
)

(define (batch-center-on-background-batch background-file input-pattern result-directory)
(let* (
    (files (cadr (file-glob input-pattern 1)))
  )
  (while (not (null? files))
    (let* (
        (file-name (car files))
        (output-filename (string-append result-directory "/" (basename-from-filename (filename-from-path file-name)) ".jpg"))
      )
      (batch-center-on-background background-file file-name output-filename)
    )

    (set! files (cdr files))
  )
))

To umieść gdzieś w katalogu (na Windowsie):

Kod:
%USERPROFILE%\AppData\Roaming\GIMP\2.10\scripts

Potem można wywołać:

Kod:
gimp -i -b "(batch-center-on-background-batch \"tlo.jpg\" \"input/*.jpg\" \"output\" )" -b "(gimp-quit 0)"

Gdzie input to nazwa katalogu, gdzie znajdują się pliki (nie są zmieniane), output to pusty katalog. Plik tla, to oczywiście pierwszy, nazwany tutaj: tlo.jpg

I efektem było:

Kod:
├── input
│   ├── aaaaa.jpg
│   └── bbbbbbbb.jpg
├── output
│   ├── aaaaa.jpg
│   └── bbbbbbbb.jpg
└── tlo.jpg

Note: używałem AI, ale okazało się, że robi błędy.
« Ostatnia zmiana: 05.10.2024, 07:41:25 wysłane przez Ziomioslaw » Zapisane
oinisco
Nowicjusz

Reputacja: 0 Offline Offline

Wiadomości: 3
Galeria Użytkownika

oinisco


Zobacz profil
« Odpowiedz #5 : 06.10.2024, 15:31:02 »

Utworzyłem ten plik zarówno w formacie SCM jak i TXT. Wrzuciłem oba do podanego przez Ciebie katalogu. Dodatkowo dodałem je do Program Files... scripts gdzie mam pozostałe skrypty GIMP. Rozumiem, że skrypt powinien być widoczny w Script-Fu, w menu? Nie ma go tam.

Pierwszy raz mam do czynienia ze skryptem GIMP, nie jestem też programistą więc wybacz pytania.

Zastanawiam się jeszcze, czy ścieżka

gimp -i -b "(batch-center-on-background-batch \"tlo.jpg\" \"input/*.jpg\" \"output\" )" -b "(gimp-quit 0)"

jest poprawna. 2x ma być batch?
Zapisane
Ziomioslaw
Administrator

Reputacja: 46 Offline Offline

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


Cyklista Apokalipsy


Zobacz profil
« Odpowiedz #6 : 08.10.2024, 21:12:19 »

 Lime Point Wystarczy tylko do katalogu użytkownika

 Lime Point Nie będzie widoczny w GIMP-ie, bo brakuje rejestracji, on został przeznaczony do uruchamiania we wierszu poleceń

 Lime Point "2x ma być batch?", tak to poprawne, bo koślawo napisałem tę nazwę, ona jest tutaj:

Kod:
(define (batch-center-on-background-batch background-file (...)

 Lime Point Poprawiłem ten skrypt i nazwy do niego, plus kierunek slashy, bo Windows to dalej ma je źle:

Kod:
(define (center-on-background background-file input-file output-file)
(let* (
    (input-image (car (gimp-file-load RUN-NONINTERACTIVE input-file input-file)))
    (background-image (car (gimp-file-load RUN-NONINTERACTIVE background-file background-file)))
    (input-layer (car (gimp-image-get-active-layer input-image)))
    (bg-width (car (gimp-image-width background-image)))
    (bg-height (car (gimp-image-height background-image)))
    (input-width (car (gimp-image-width input-image)))
    (input-height (car (gimp-image-height input-image)))
    (x-pos (/ (- bg-width input-width) 2))
    (y-pos (/ (- bg-height input-height) 2))
  )

  (gimp-edit-copy input-layer)
  (let* (
      (new-layer (car (gimp-layer-new background-image bg-width bg-height RGBA-IMAGE "Layer" 100 NORMAL-MODE)))
    )

    (gimp-image-add-layer background-image new-layer -1)
    (gimp-image-set-active-layer background-image new-layer)
    (gimp-edit-paste new-layer TRUE)
    (gimp-layer-set-offsets new-layer x-pos y-pos)
    (gimp-floating-sel-anchor (car (gimp-image-get-active-layer background-image)))
  )

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

  (gimp-image-delete input-image)
  (gimp-image-delete background-image)
))

(define (filename-from-path path)
  (car (reverse (strbreakup path "\\")))
)

(define (basename-from-filename file-name)
  (car (strbreakup file-name "."))
)

(define (center-on-background-batch background-file input-pattern result-directory)
(let* (
    (files (cadr (file-glob input-pattern 1)))
  )
  (while (not (null? files))
    (let* (
        (file-name (car files))
        (output-filename (string-append result-directory "\\" (basename-from-filename (filename-from-path file-name)) ".jpg"))
      )
      (center-on-background background-file file-name output-filename)
    )

    (set! files (cdr files))
  )
))

Możesz tym zastąpić poprzedni plik (nazwa pliku nie gra roli, liczy się tylko rozszerzenie, musi być "scm").

 Lime Point możliwe, że "gimp", będzie u Ciebie poleceniem nie rozpoznanym, albo dodać do zmiennej PATH, albo wywoływać całą ścieżkę:

Kod:
"C:\Program Files\GIMP 2\bin\gimp-2.10.exe"

To akurat łatwo sprawdzić, bo jeśli wpiszesz we wierszu poleceń powyższe polecenie, to otworzy się gimp:

Kod:
Microsoft Windows [Version 10.0.19045.4894]
(c) Microsoft Corporation. Wszelkie prawa zastrzeżone.

C:\Users\ziomi\Documents\pictures>"C:\Program Files\GIMP 2\bin\gimp-2.10.exe"

 Lime Point Jak uruchomić wiersz poleceń? otwórz Menu Start, wpisz "cmd", pojawi się program "Wiersz poleceń", to ten. Takie czarne okienko z biały tekstem.

 Lime Point Ale można uruchomić też konsole przez wpisanie "cmd", w pasek adresu (tam gdzie się wyświetla jaki katalog otwierasz)



 Lime Point Czyli całe polecenie w systemie Windows będzie wyglądać tak:

Kod:
"C:\Program Files\GIMP 2\bin\gimp-2.10.exe" -i -b "(center-on-background-batch \"tlo.png\" \"input\\*.jpg\" \"output\" )" -b "(gimp-quit 0)"

Tu jedyne na co trzeba zwrócić uwagę, to jak podajesz nazwę katalogów, to trzeba pisać \\ (podwójny backslash, bo to Winndows).

 Lime Point Pojawi się drugie okno z wynikami polecenia.
Zapisane
Strony: [1]
DrukujPobierz PDF
Polskie Forum Użytkowników GIMP-aOgólne dyskusjePomocna dłońGIMP - pomoc (Moderator: be@)Wątek: Hurtowe dodawanie tla (scalanie) do zdjęć
Skocz do: