gimphez írt script írása oly módon, hogy a grafikus gimp el se induljon

Sziasztok.

Van sok-sok képem, amiken egy 8 lépcsős effektsorozatot akarok végrehajtani oly módon, hogy még a rétegeket is kezelem.
A kimenet egy gimp fájl lenne, amin manuálisan hajtanék végre egy CURVE görbemódosítást. (Ezután menteném el a végleges fájlt)

Célom az, hogy az első 8 lécsős feladat után kelljen egerészéssel és gyorsgombokkal szórakoznom.

Kérdés: hogyan írok gimp-scriptet, ami lefut parancssorban?

Hozzászólások

Az nem megoldás, ha előbb végrehajtod az összes képen ezeket az effekteket Bimp-pel?

De hát ez egy GIMP plugin, akármelyik GIMP operationt-t (vagy akár plugint) támogatja. Csak ad egy GUI-t, amiben összekattintgathatod a batch processt. Annyi hátránya van, hogy mindenképp elmenti az eredményt és XCF-et nem támogat, vagyis attól függően mit szeretnél csinálni nem biztos, hogy ez elfogadható megoldás.

Egen, sajnos a readme szerint járva el mégsem képes nálam lefordulni...

└─# make
which gimptool-2.0 && \
gcc -o ./bin/bimp -O2 -pthread -I/usr/include/gtk-2.0 -I/usr/lib/i386-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gimp-2.0 -Wall -Wno-unused-variable -Wno-pointer-sign -DGIMP_DISABLE_DEPRECATED src/*.c src/manipulation-gui/*.c src/images/*.c -lgimpui-2.0 -lgimpwidgets-2.0 -lgimpmodule-2.0 -lgimp-2.0 -lgimpmath-2.0 -lgimpconfig-2.0 -lgimpcolor-2.0 -lgimpbase-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -lm
/usr/bin/gimptool-2.0
src/bimp-manipulations-gui.c: In function ‘bimp_open_editwindow’:
src/bimp-manipulations-gui.c:48:14: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
         save = &bimp_resize_save;
              ^
src/bimp-manipulations-gui.c:52:14: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
         save = &bimp_crop_save;
              ^
src/bimp-manipulations-gui.c:56:14: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
         save = &bimp_fliprotate_save;
              ^
src/bimp-manipulations-gui.c:60:14: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
         save = &bimp_color_save;
              ^
src/bimp-manipulations-gui.c:64:14: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
         save = &bimp_sharpblur_save;
              ^
src/bimp-manipulations-gui.c:68:14: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
         save = &bimp_changeformat_save;
              ^
src/bimp-manipulations-gui.c:72:14: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
         save = &bimp_watermark_save;
              ^
src/bimp-manipulations-gui.c:76:14: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
         save = &bimp_rename_save;
              ^
src/bimp-manipulations-gui.c:80:14: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
         save = &bimp_userdef_save;
              ^
src/bimp-operate.c: In function ‘apply_resize’:
src/bimp-operate.c:516:13: error: ‘GIMP_LAYER_MODE_NORMAL_LEGACY’ undeclared (first use in this function)
             GIMP_LAYER_MODE_NORMAL_LEGACY
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bimp-operate.c:516:13: note: each undeclared identifier is reported only once for each function it appears in
src/bimp-operate.c:534:37: error: ‘GIMP_FILL_BACKGROUND’ undeclared (first use in this function); did you mean ‘GIMP_OFFSET_BACKGROUND’?
         gimp_drawable_fill(layerId, GIMP_FILL_BACKGROUND);
                                     ^~~~~~~~~~~~~~~~~~~~
                                     GIMP_OFFSET_BACKGROUND
src/bimp-operate.c:538:9: warning: implicit declaration of function ‘gimp_item_transform_translate’; did you mean ‘gimp_item_transform_rotate’? [-Wimplicit-function-declaration]
         gimp_item_transform_translate(layerId, -abs(view_w - final_w) / 2, -abs(view_h - final_h) / 2);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         gimp_item_transform_rotate
src/bimp-operate.c: In function ‘apply_color’:
src/bimp-operate.c:667:23: warning: implicit declaration of function ‘gimp_drawable_brightness_contrast’; did you mean ‘gimp_brightness_contrast’? [-Wimplicit-function-declaration]
             success = gimp_drawable_brightness_contrast(
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                       gimp_brightness_contrast
src/bimp-operate.c:684:23: warning: implicit declaration of function ‘gimp_drawable_levels_stretch’; did you mean ‘gimp_levels_stretch’? [-Wimplicit-function-declaration]
             success = gimp_drawable_levels_stretch(out->drawable_ids[i]);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
                       gimp_levels_stretch
src/bimp-operate.c:710:31: warning: implicit declaration of function ‘gimp_drawable_curves_spline’; did you mean ‘gimp_drawable_set_pixel’? [-Wimplicit-function-declaration]
                     success = gimp_drawable_curves_spline(out->drawable_ids[i], GIMP_HISTOGRAM_VALUE, colorcurve_num_points_v, colorcurve_ctr_points_v);
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~
                               gimp_drawable_set_pixel
src/bimp-operate.c: In function ‘image_save’:
src/bimp-operate.c:1107:17: error: ‘GIMP_CONVERT_DITHER_FS’ undeclared (first use in this function); did you mean ‘GIMP_FIXED_DITHER’?
                 GIMP_CONVERT_DITHER_FS,
                 ^~~~~~~~~~~~~~~~~~~~~~
                 GIMP_FIXED_DITHER
src/bimp-operate.c:1108:17: error: ‘GIMP_CONVERT_PALETTE_GENERATE’ undeclared (first use in this function); did you mean ‘GIMP_TYPE_CONVERT_PALETTE_TYPE’?
                 GIMP_CONVERT_PALETTE_GENERATE,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                 GIMP_TYPE_CONVERT_PALETTE_TYPE
src/bimp-operate.c: In function ‘image_save_gif’:
src/bimp-operate.c:1184:9: error: ‘GIMP_CONVERT_DITHER_FS’ undeclared (first use in this function); did you mean ‘GIMP_FIXED_DITHER’?
         GIMP_CONVERT_DITHER_FS,
         ^~~~~~~~~~~~~~~~~~~~~~
         GIMP_FIXED_DITHER
src/bimp-operate.c:1185:9: error: ‘GIMP_CONVERT_PALETTE_GENERATE’ undeclared (first use in this function); did you mean ‘GIMP_TYPE_CONVERT_PALETTE_TYPE’?
         GIMP_CONVERT_PALETTE_GENERATE,
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         GIMP_TYPE_CONVERT_PALETTE_TYPE
src/bimp-utils.c: In function ‘get_bimp_localedir’:
src/bimp-utils.c:172:5: warning: ignoring return value of ‘readlink’, declared with attribute warn_unused_result [-Wunused-result]
     readlink("/proc/self/exe", path, bufsize);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Még próbálkozom vele, nem értem, mi a nyomora...

10-féle lény van:
-- aki ismeri a bináris számrendszert,
-- és amelyik nem.

Szerkesztve: 2022. 02. 01., k – 20:41

Gimben az összes funkciót file megnyitás, file mentés, stb. elérhető scripből. Tudsz változókat definiálni, így ha a bemeneti fileneveid inkrementálisak, le tudod scriptelni, hogy mindegyiken egyenként végig menjen. Annó, animációhoz csináltam auto cellpaintert, átméretezőt.

Pl:

(define (resize-image filename-in filename-out new-width new-height)
  (let* ((image    (car (gimp-file-load RUN-NONINTERACTIVE filename-in "")))
         (drawable (car (gimp-image-active-drawable image)))
        )

     (gimp-image-scale image new-width new-height)
     (gimp-file-save   RUN-NONINTERACTIVE image drawable filename-out "")
  )
)

Ez egy fileátméretező függvény, ebbe illeszt be az általad használt filter kombinációt. Ehhez még kell egy keret függvényt írnod, ami minden egyes filera meghívja a függvényedet. Az adott könyvtárban való listázáshoz kell a file-glob() (egy mintával megegyező filenevek listáját adja vissza) eredményének egy whileban történő végigpörgetésére a függvényeddel. És ennyi.

"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

Megnézem, mit tudok a fentiek alapján.

Amúgy ez a nyolc lépésem lenne:

1.
Colors/Desaturate/Luminosity

2.
Duplicate

3.
Invert

4.
Layer/mode/dodge

5.
Filters/Blur/Gaussian blur/40/RLE

6.
Flatten image

7.
Duplicate

------ > fájlba írás

8.
Colors/Curves Pull (ezt minden fájlon már manuálisan végezném.)

10-féle lény van:
-- aki ismeri a bináris számrendszert,
-- és amelyik nem.

Köszi!

Honnan tudod a fv neveket? Hullafáradtan épp azt kerestem, de mindig félrekeresek...
Amúgy a desaturate is paraméteres (Luminosity) -- és azt írod, ilyenek nem szkriptelhetők.

10-féle lény van:
-- aki ismeri a bináris számrendszert,
-- és amelyik nem.

Filters->Script-Fu->Console->Browse...
Elkezded gépelni és dobja  fg nevet és a helpet hozzá.
gimp-desaturate-drawable mode paraméternél lehet választani DESATURATE-VALUE módot. De még nem használtam, kicsit túrni kell a netet.

"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

Igen. De ha csak adott userrel akarod használni a scriptet, akkor ~/.gimp-2.x/scripts/ könyvtárba is mehet.

Annyi, hogy a script végén, két függvénnyel regisztrálnod kell a gimpbe a scriptedet:

pl:

(script-fu-register "script-fu-scriptednekneve"
  _"_Scripted neve..."
  _"Mit csinál a scripted"
  "Ki csinálta a scriptedet plusz email"
  "Adrian Likins"
  "mikor csinaltad a scripted"
  "RGB* GRAY*" <=milyen képtípusokkal tud dolgozni a cripted
  GUI elemek és paraméterek felsorolása, 1 elem/sor,
)

(script-fu-menu-register "script-fu-scriptedneve"
                         "<Image>/Filters/Ahovaakarodtenniascriptedetamenuben")

"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "