Gimp "script-fu" kötegelt futtatása parancssorban

Sziasztok.

Egy Gimp-re írt, remekül működő, "hdr-eff.scm" nevű scriptet szeretnék rengeteg fájlon végrehajtani paraméterek nélkül.
( http://registry.gimp.org/node/11776 )

Így próbálkoztam:

gimp --no-data \
--no-fonts \
--no-interface \
-b '(hdr-eff.scm "./fajl.jpg_original")' '(gimp-quit 0)'

A script elindult, de valahol megállt:

(gimp:16759): GLib-GObject-WARNING **: g_object_set_valist: object class 'GeglConfig' has no property named 'cache-size'

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA777768 from "gimp:point-layer-mode" to "gimp:dissolve-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA7779E8 from "gimp:point-layer-mode" to "gimp:behind-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA777C00 from "gimp:point-layer-mode" to "gimp:multiply-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA777E10 from "gimp:point-layer-mode" to "gimp:screen-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA778218 from "gimp:point-layer-mode" to "gimp:overlay-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA778430 from "gimp:point-layer-mode" to "gimp:difference-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA778670 from "gimp:point-layer-mode" to "gimp:addition-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA7788B8 from "gimp:point-layer-mode" to "gimp:subtract-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA778AD8 from "gimp:point-layer-mode" to "gimp:darken-only-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA778CF8 from "gimp:point-layer-mode" to "gimp:lighten-only-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA778EF0 from "gimp:point-layer-mode" to "gimp:hue-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA779120 from "gimp:point-layer-mode" to "gimp:saturation-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA779340 from "gimp:point-layer-mode" to "gimp:color-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA779540 from "gimp:point-layer-mode" to "gimp:value-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA779758 from "gimp:point-layer-mode" to "gimp:divide-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA7799B8 from "gimp:point-layer-mode" to "gimp:dodge-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA779BD0 from "gimp:point-layer-mode" to "gimp:burn-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA779E18 from "gimp:point-layer-mode" to "gimp:hardlight-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA77A010 from "gimp:point-layer-mode" to "gimp:softlight-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA77A268 from "gimp:point-layer-mode" to "gimp:grain-extract-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA77A480 from "gimp:point-layer-mode" to "gimp:grain-merge-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA77A6A8 from "gimp:point-layer-mode" to "gimp:color-erase-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA77A8C8 from "gimp:point-layer-mode" to "gimp:erase-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA77AAD0 from "gimp:point-layer-mode" to "gimp:replace-mode"

(gimp:16759): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0xA77B238 from "gimp:point-layer-mode" to "gimp:anti-erase-mode"
batch command experienced an execution error:
Error: ( : 165519496) eval: unbound variable: hdr-eff.scm

Aztán áll, visszaadott prompt sincs.

Valamit rosszul csinálok?

Hozzászólások

-Hányas GIMP-ed van? (Ez az effekt 2.6-ra íródott, 2008-ban. A 2.6-tól cserélték le a GIMP core-t a GEGL-re. Nem biztos, de lehetséges, hogy csak a régi GIMP eljárásokon fut hibátlanul.)

-Interaktívan hibátlanul lefut az effekt?

-
"Attempting to break SpeedLock can damage your sanity"

Barkácsoltam egy kis .scm batch scriptet a hdr effekt futtatásához, azzal indítva a következő hibaüzenet jön:

gimp -i --batch '(script-fu-batch-hdr "./*.jpg")' --batch '(gimp-quit 0)'
GIMP-Hiba: Hívási hiba a(z) „gimp-layer-copy” eljárásnál:
A(z) „gimp-layer-copy” eljárás számára érvénytelen azonosító lett megadva ezen argumentumban: „layer”. Valószínűleg egy bővítmény olyan rétegre hivatkozott, amely már nem létezik.

batch command experienced an execution error

A hdr-ben valahol egy gimp-layer-copy eljárás megakad. Szerintem ez a script nem volt tesztelve a 2.6-on (vagy újabbakon) batch módban, és csak interaktívan fut hibátlanul. Hét gimp-layer-copy van benne, meg kell találni a hibát okozó részt, és belejavítani. (szerintem egy set! parancs lesz az oka, ezzel szép nagyokat lehet szívni...a GIMP scheme script interpretere változott az évek alatt, és a működése, illetve a dokumentáltsága -bár látszólag tisztességes- mégis vért tud izzasztani az emberből)

-
"Attempting to break SpeedLock can damage your sanity"

Totálisan nem offnak szánom, hanem belefutottam régen ebbe én is, az ImageMagick bizonyult jó megoldásnak, annak ellenére, hogy sokat kellett melózni vele.

--
Tortilla; A tortilla a spanyol nyelvterületek tradicionális étele! Hagyd már; ABBA!; Droppboksz

bloat

a photoshop legalább natív pluginokkal dolgozik, nem pythonnal=bloattal

bloat
a photoshop legalább natív pluginokkal dolgozik, nem pythonnal=bloattal

A GIMP natív pluginokkal dolgozik, nem pythonnal=bloattal. Natívak, binárisak, kivétel nélkül.

A script-fu és a python-fu nem plugin, hanem script, ami beépített, illetve bővítményként szereplő GIMP eljárások sorozatát hajtja végre igény szerint, kellő vezérléssel támogatva. Script-fu esetén régebben a SIOD, ma már a TinyScheme interpreter dolgozik, ami Scheme nyelvet értelmez, ez gyakorlatilag egy egyszerűsített LISP megvalósítás. Néha kicsit hisztis a működése, vannak korlátai, de az adott célra viszonylag jól használható. Amit nem lehet benne megvalósítani, arra ott a python-fu, ami egy másik script interpreter a GIMP-hez, természetesen python nyelven művelhető, ami már nem az én világom, zengje másik dalnok. :)

Egyébként, a GIMP-hez tetszőleges script interpretert lehet készíteni, illeszteni...szóval, ha a LISP rigolyás és oldskool, a python meg bloat, lehet tenni ellene. :)

Sőt...a népszerűbb scripteket újra is lehetne írni, natív pluginként implementálva, azért, hogy kicsi legyen, gyors, és ne legyen olyan bloat.

-
"Attempting to break SpeedLock can damage your sanity"