Quoting Dillon <dillonontheco...@gmail.com>:

> The reason I'm writing my own script-fu, rather than using Daves Batch
> Processor, is that my TIF files are multi-page, and when I load the image
> and flatten it to a drawable, I end up with both pages flattened into one
> drawable.  I only want one of the pages (I think the first).
> I need to find a way to select that page (which I assume is turned into a
> layer when the TIF is loaded), and just set that layer to be my drawable.

In that case, you were on the right track originally with using  
'gimp-image-get-layers' (I am also assuming multi-page TIFFs load as  
separate layers). However, you had incorrectly handled the value  
returned by the function.

'gimp-image-get-layers' returns returns a list containing two  
elements: the number of layers in the image and an array of the  
layerIDs of those layers:

   (set! num-layers (car (gimp-image-get-layers image)))
   (set! layerIDs (cadr (gimp-image-get-layers image)))

You can obtain the layerID of the top layer with:

   (set! top-layer (vector-ref layerIDs 0))

The next down with:

   (set! next-layer (vector-ref layerIDs 1))

And so on:

   (set! bottom-layer (vector-ref layerIDs (- num-layers 1)))

If you know the position of the layer you wish to keep (the TIFF  
page), you can then remove all of the other layers from the image with:

   (set! pos 0)
   (while (< pos num-layers)
     (unless (= pos TIFFpage)
       (gimp-image-remove-layer image (vector-ref layerIDs pos))
     (set! i (+ i 1))

Gimp-user mailing list

Reply via email to