Hi,

My code needs to do a one-pixel-wide selection, at distance "x" from the 
current selection.  This looks a lot like a border selection except that 
the border selection creates at best a two-pixel wide ribbon and I only 
want one (but if I'm wrong, please tell me how to :-)

So far my code goes like this:

# Selects pixels that are between x and x+1 pixels from
# the original selection. Bumping the selection by one
# each time doesn't work, a small circle degenerates into
# a square with rounded corners instead of a big circle.
     def select_ribbon(self,image,selection,dist):
         pdb.gimp_selection_load(selection)
         pdb.gimp_selection_grow(image,dist+1)
         outer=pdb.gimp_selection_save(image)
         pdb.gimp_selection_load(selection)
         pdb.gimp_selection_grow(image,dist)
         inner=pdb.gimp_selection_save(image)
         pdb.gimp_channel_combine_masks(outer,inner,CHANNEL_OP_SUBTRACT,0,0)
         pdb.gimp_selection_load(outer)
         image.remove_channel(outer)
         image.remove_channel(inner)

That works, but can be slow (especially since it's at the core of a 
loop). Is there any better way? Or useless code to jettison?

Next improvement is to create a 3-pixels selection and feather it one 
pixel. Anything to be wary of?

--
Ofnuts

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

Reply via email to