Re: Using GIMP from my own program

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Well, following all advices I decide to make the plugins I need for gimp,

and use it in batch mode, this way plugins will be available for everybody.

But my first attempt is not working fine, I'm coping/pasting the following

code into the script-fu console, and I get a black image as glam-out.jpg

with correct size, could you tell me why ?,

(this is a test that should make an image which is double in height than

input, and the upper half size has the input copied as is and the lower

half size has the input copied rotated 180)

(let* (

(image (car(gimp-file-load 1 "/home/pablo/glam.jpg" "/home/pablo/glam.jpg")))

(width (car (gimp-image-width image)))

(height (car (gimp-image-height image)))

(newheight (* height 2))

(newimage (car(gimp-image-new width newheight RGB)))

(newlayer (car (gimp-layer-new newimage width newheight RGBA-IMAGE "Copy" 100 NORMAL-MODE)))

)

(gimp-context-push)

(gimp-image-add-layer newimage newlayer -1)

(gimp-drawable-set-visible newlayer TRUE)

(gimp-selection-all image)

(gimp-edit-copy-visible image)

(gimp-rect-select newimage 0 0 width height CHANNEL-OP-ADD FALSE 0)

(let ((floating-sel (car (gimp-edit-paste newimage FALSE))))

(gimp-floating-sel-anchor floating-sel)

)

(gimp-selection-none newimage)

(gimp-rect-select newimage 0 height width height CHANNEL-OP-ADD FALSE 0)

(let ((floating-sel (car (gimp-edit-paste newimage FALSE))))

(gimp-rotate floating-sel FALSE 180)

(gimp-floating-sel-anchor floating-sel)

)

(gimp-file-save 1 newimage newlayer "/home/pablo/glam-out.jpg" "/home/pablo/glam-out.jpg")

(gimp-context-pop)

)

Best Regards,

Pablo

On Sunday 14 December 2008 16:36:10 saulgoode@xxxxxxxxxxxxxxxxxxxxxxxxxxxxx wrote:

> Quoting Pablo Yaggi <pyaggi@xxxxxxxxxxxxxxx>:

> > So ..., I think a couple of things are not clear to me about gimp,

> > if plugins communicate with the core of gimp thought a pipe, I

> > should be able to create a plugin to do what i want, even

> > call other plugins, but could that plugin be executed from outside

> > the core ?, ...

>

> Yes.

>

> > even so it is necesary that gimp is running before

> > doing it ?

>

> Yes, if you want to use plug-ins or scripts then you will want GIMP to

> be running (unless you want to reimplement all of the functionality of

> handling those plug-ins using libgimp).

>

> > are the core and gui strict releated, i mean are the same

> > thing? can the gui be down, and the core working ?

>

> Yes, you can execute GIMP without the GUI by passing the

> '--no-interface' ('-i') option on the command line. Script-fu code can

> be passed to GIMP on the command line as well, if you know what that

> code is in advance. If you need a more interactive approach, you could

> also have GIMP running in a server mode where Script-fu commands are

> passed over TCP.

>

> > In other words, is it possible in any way to use gimp for

> > automatic image processing/generating, because GEGL its very

> > promissing but gimp is fully charged with plugins and tools,

> > and It sould be very nice to use all that power for automatic

> > process.

>

> First, I would propose that you investigate Imagemagick command line

> tools ( http://www.imagemagick.org/ ) and see if they present a better

> solution.

>

> Second, you should investigate using GEGL. It is particularly targeted

> for the type of activity you are pursuing and your participation could

> help advance its progress.

>

> If neither of those two options seem desirable then I would present

> the following GIMP-based options:

>

> 1) Invoke GIMP from your C program, passing the commands you wish

> executed as Script-fu in batch mode ('-b').

>

> 2) If you need lower level processing than provided by Script-fu,

> write your code as a GIMP plug-in and invoke your plug-in from a batch

> Script-fu command. Example:

> gimp -i -b '(plug-in-pablos-function RUN-NONINTERACTIVE parameter1

> parameter2)' -b '(quit 0)'

>

> 3) Run an interactive server, as briefly described in this ML posting:

> (

> http://flashingtwelve.brickfilms.com:2095/horde/imp/message.php?index=11369

> )

>

> 4) Write your code as a GIMP plug-in per the tutorial described here:

> ( http://gimp.org/docs/plug-in/sect-essentials.html )

>

> however, you should register an 'init' procedure which invokes your

> plug-in (perhaps passing it command line parameters).

>

> This will have the effect of your plug-in automatically being executed

> when GIMP is run; therefore do NOT put your autoexecuted plug-in into

> the standard GIMP plug-in folders (or you will "break" normal usage of

> GIMP). Instead, create a custom gimprc file (e.g.,

> "$HOME/gimprc.pablo") which adds the path of your autoexecuted plug-in

> to the plug-in search path:

> (plug-in-path

> "${gimp_dir}/plug-ins:$HOME/.gimp-2.6/plug-ins:$HOME/autoexec/plug-ins")

>

> You then can invoke GIMP, specifying the alternate gimprc:

> gimp -i -g $HOME/gimprc.pablo

>

> =======================

>

> There is little difference between 2) and 4) in net effect, but I

> thought I would try to explain it anyway (I have never tried the

> fourth method). Usually the 'init' procedure is not used for

> individual plug-ins -- it is used to configure things for entire

> packages of multiple plug-ins (such as Python-fu or the GIMP Animation

> Package).

>

>

>

> _______________________________________________

> Gimp-developer mailing list

> Gimp-developer@xxxxxxxxxxxxxxxxxxxxxx

> https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer

_______________________________________________
Gimp-developer mailing list
Gimp-developer@xxxxxxxxxxxxxxxxxxxxxx
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer

[Index of Archives]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [GIMP for Windows]     [KDE]     [GEGL]     [Gimp's Home]     [Gimp on GUI]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux