03-26-2025, 11:12 AM
(03-26-2025, 02:08 AM)CmykStudent Wrote: joeyeroq: Hi! It looks like you're getting individual GeglColor pixels - this will be very slow. You should look into the GeglBuffer API, which lets you retrieve all pixels at once as an array, make your edits, then put that array back into the GeglBuffer.How do you use the buffer?
For example how do you print out the first 4 pixels with the buffer?
With a slow loop over pixels in Python Console:
Code:
image = Gimp.get_images()[0]
layer = image.get_layers()[0]
for pixel_x in range(0, layer.get_width()):
if pixel_x == 4:
break
pixel = layer.get_pixel(pixel_x, 0).get_rgba()
print(pixel)
gives result
(red=1.0, green=1.0, blue=1.0, alpha=1.0)
(red=1.0, green=1.0, blue=1.0, alpha=1.0)
(red=1.0, green=1.0, blue=1.0, alpha=1.0)
(red=1.0, green=1.0, blue=1.0, alpha=1.0)
Now with buffer:
Code:
image = Gimp.get_images()[0]
layer = image.get_layers()[0]
buffer = layer.get_buffer()
What do I do from here? probably buffer.get() but what parameters do i put in it?
(03-26-2025, 08:51 AM)Ofnuts Wrote: Ofnuts
- Also, even in Gimp2, I wouldn't have used tiles but "pixel regions".
What are "pixel regions"?
Please give small snippet to put into Python console.