Re: [Gimp-developer] Gracefully handling BPP in a python plugin
On Sat, 2010-09-18 at 21:55 +0200, Ofnuts wrote: If that is the case, then there is a bug somewhere. But I very much doubt that gray-scale layers are reported to have 3 or channels. Perhaps you can show us some example code? Hmm. Wrote some fresh code to demonstrate this and of course it behaves as you say. Grumble, grumble. Back to the drawing board. Thx for the heads up. PS: well, something fishy still. Creating a greyscale layer in a RGB image works, and yields a 1BPP layer: image_color = pdb.gimp_image_new(100,100,0) layer_grayscale=pdb.gimp_layer_new(image_color,100,100,2,'grayscale_layer',100,0) print pdb.gimp_drawable_get_pixel(layer_grayscale,0,0) First of all, why are you using the PDB directly instead of using the Python objects? The code to create an image and an RGBA layer should look like this: image = image = gimp.Image(100, 100, RGB) layer = gimp.Layer(image, RGB layer, 100, 100, RGBA_IMAGE) image.add_layer(layer) Then to address you problem, you are not really creating a grayscale layer in an RGB image. Your code only creates the layer, it doesn't actually add it to the image. If you tried to do that, then that would fail. Sven ___ Gimp-developer mailing list Gimp-developer@lists.XCF.Berkeley.EDU https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer
Re: [Gimp-developer] Gracefully handling BPP in a python plugin
On 19/09/2010 20:44, Sven Neumann wrote: First of all, why are you using the PDB directly instead of using the Python objects? Ignorance, defiance, and laziness. The doc for the Image class (http://www.gimp.org/docs/python/index.html) has around 20 methods. Compare to the number of gimp_image_* functions in the PDB (not speaking of all the Python class methods/attributes vs the whole PDB)(*) For a newcomer, it looks like using the Python classes isn't going to cut it, since PDB functions will have to be used anyway, so why bother with two ways of doing things? And for the laziness bit, the python-fu console gives pre-cooked PDB calls... The code to create an image and an RGBA layer should look like this: image = image = gimp.Image(100, 100, RGB) layer = gimp.Layer(image, RGB layer, 100, 100, RGBA_IMAGE) image.add_layer(layer) Then to address you problem, you are not really creating a grayscale layer in an RGB image. Your code only creates the layer, it doesn't actually add it to the image. If you tried to do that, then that would fail. Indeed. Case closed :-) (*) I'm not underestimating the challenge of having a complete Python vision of the PDB... ___ Gimp-developer mailing list Gimp-developer@lists.XCF.Berkeley.EDU https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer
Re: [Gimp-developer] Gracefully handling BPP in a python plugin
On Sun, 2010-09-19 at 21:36 +0200, Ofnuts wrote: On 19/09/2010 20:44, Sven Neumann wrote: First of all, why are you using the PDB directly instead of using the Python objects? Ignorance, defiance, and laziness. The doc for the Image class (http://www.gimp.org/docs/python/index.html) has around 20 methods. Compare to the number of gimp_image_* functions in the PDB (not speaking of all the Python class methods/attributes vs the whole PDB)(*) For a newcomer, it looks like using the Python classes isn't going to cut it, since PDB functions will have to be used anyway, so why bother with two ways of doing things? Because the 20 methods that are available in the Image class cover about 95% of what people actually need. It's much more convenient and you can of course still use methods from the pdb module. Oh, and the docs you pointed at are hopelessly outdated and should probably be taken off-line. You better refer to the help you get in the Python console. Sven ___ Gimp-developer mailing list Gimp-developer@lists.XCF.Berkeley.EDU https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer
Re: [Gimp-developer] Gracefully handling BPP in a python plugin
On Sat, 2010-09-18 at 01:51 +0200, Ofnuts wrote: I had overlooked the fact that greyscale was an attribute of the image and not the layer. Thanks for the reminder. With that in mind I could perform some more tests with greyscale and it turns out that at least the python interface returns 3 or 4 channels even in greyscale, so everything is OK. If that is the case, then there is a bug somewhere. But I very much doubt that gray-scale layers are reported to have 3 or channels. Perhaps you can show us some example code? Sven ___ Gimp-developer mailing list Gimp-developer@lists.XCF.Berkeley.EDU https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer
Re: [Gimp-developer] Gracefully handling BPP in a python plugin
On 18/09/2010 19:23, Sven Neumann wrote: On Sat, 2010-09-18 at 01:51 +0200, Ofnuts wrote: I had overlooked the fact that greyscale was an attribute of the image and not the layer. Thanks for the reminder. With that in mind I could perform some more tests with greyscale and it turns out that at least the python interface returns 3 or 4 channels even in greyscale, so everything is OK. If that is the case, then there is a bug somewhere. But I very much doubt that gray-scale layers are reported to have 3 or channels. Perhaps you can show us some example code? Hmm. Wrote some fresh code to demonstrate this and of course it behaves as you say. Grumble, grumble. Back to the drawing board. Thx for the heads up. PS: well, something fishy still. Creating a greyscale layer in a RGB image works, and yields a 1BPP layer: image_color = pdb.gimp_image_new(100,100,0) layer_grayscale=pdb.gimp_layer_new(image_color,100,100,2,'grayscale_layer',100,0) print pdb.gimp_drawable_get_pixel(layer_grayscale,0,0) This a moot point right now because I'm not creating images layers that way, but you said this couldn't happen? ___ Gimp-developer mailing list Gimp-developer@lists.XCF.Berkeley.EDU https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer
[Gimp-developer] Gracefully handling BPP in a python plugin
Hello, I'm writing a plugin that takes a drawable as input for pixel values. What kind of BPP can I expect? I'd say 4 and 3 are color layers with and without alpha. Will I encounter 2 and 1 for grey-levels with and without alpha, too? I can't find a way to create a layer in grey levels (or to change an existing color one to grey levels). Am I overlooking the obvious or would that only apply to layer masks? I'm actually using the drawable pixels fro set the foreground color for various operation (selection stroke and bucket fill). Is there a general function to convert the pixel values betwen drawables of different depth? or can I put in gimp_context_set_foreground() whatever I get from gimp_drawable_get_pixel()? ___ Gimp-developer mailing list Gimp-developer@lists.XCF.Berkeley.EDU https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer
Re: [Gimp-developer] Gracefully handling BPP in a python plugin
On Fri, 2010-09-17 at 20:48 +0200, Ofnuts wrote: Hello, I'm writing a plugin that takes a drawable as input for pixel values. What kind of BPP can I expect? I'd say 4 and 3 are color layers with and without alpha. Will I encounter 2 and 1 for grey-levels with and without alpha, too? Well, it depends on what your procedure specifies as image types when it registers. The documentation says: image_types is a comma separated list of image types, or actually drawable types, that this procedure can deal with. Wildcards are possible here, so you could say RGB* instead of RGB, RGBA or * for all image types. If the procedure doesn't need an image to run, use the empty string. I can't find a way to create a layer in grey levels (or to change an existing color one to grey levels). Am I overlooking the obvious or would that only apply to layer masks? Grayscale layers only exist in grayscale images. If you specify GRAY and/or GRAYA or *, then your procedure needs to handle those drawable types. Sven ___ Gimp-developer mailing list Gimp-developer@lists.XCF.Berkeley.EDU https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer
Re: [Gimp-developer] Gracefully handling BPP in a python plugin
On 18/09/2010 00:33, Sven Neumann wrote: On Fri, 2010-09-17 at 20:48 +0200, Ofnuts wrote: Hello, I'm writing a plugin that takes a drawable as input for pixel values. What kind of BPP can I expect? I'd say 4 and 3 are color layers with and without alpha. Will I encounter 2 and 1 for grey-levels with and without alpha, too? Well, it depends on what your procedure specifies as image types when it registers. The documentation says: image_types is a comma separated list of image types, or actually drawable types, that this procedure can deal with. Wildcards are possible here, so you could say RGB* instead of RGB, RGBA or * for all image types. If the procedure doesn't need an image to run, use the empty string. I can't find a way to create a layer in grey levels (or to change an existing color one to grey levels). Am I overlooking the obvious or would that only apply to layer masks? Grayscale layers only exist in grayscale images. If you specify GRAY and/or GRAYA or *, then your procedure needs to handle those drawable types. I had overlooked the fact that greyscale was an attribute of the image and not the layer. Thanks for the reminder. With that in mind I could perform some more tests with greyscale and it turns out that at least the python interface returns 3 or 4 channels even in greyscale, so everything is OK. Thx for the help. ___ Gimp-developer mailing list Gimp-developer@lists.XCF.Berkeley.EDU https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer