[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Flood Filling Images



Thanks for the information, Brian. I wrote a little function that does pixel-by-pixel (which isn't horribly slow for the images I want but could be sped up a good deal I'm thinking), and since I don't want to work with just 8-bit images I think I'll check out buffers. I believe I was looking at this image where the paint bucket would have done what I wanted, so I called it flood fill... Still, thanks for catching that.

Lenard, thanks for your suggestion. I was considering something like that, but it seems like I would have issues if I wanted part of the image to be transparent always in certain places, not just where I want the color to change...

On Fri, Apr 11, 2008 at 8:57 PM, Brian Fisher <brian@xxxxxxxxxxxxxxxxxxx> wrote:
What you describe isn't flood-filling - flood filling means painting
from a point (like the paint bucket) and it's for like filling circles
and stuff.

To answer your question though, pygame/sdl provides features identical
to PHP's  imageColorSet and it's ilk. 8-bit images in pygame have
palettes (indexed colors). In particular, Surface.set_palette_at is a
direct imageColorSet equivalent.

If you don't want to use palette's, though, then checking each pixel
and replaceing each pixel (Color Replacement - what you have been
doing) is the only way to go, but Surface.get_buffer can be used to
make such things much faster.


On Fri, Apr 11, 2008 at 6:53 PM, Kevin <kevinmccloud@xxxxxxxxx> wrote:
> Hi, I'm looking for a fast way of "flood-filling" an image, like changing
> all green to red and such (akin to PHP's imageColorSet() function if that
> helps). The current method I'm looking at is locking the surface, getting
> every pixel on the surface one by one and then setting it if it's a certain
> color, and unlocking, but even the documentation says that's going to be
> slow (maybe it's fast enough with the new PyGame release?). There's a good
> chance I might have missed something in pygame.display, but any suggestions
> or pointing to some built-in thing would be appreciated.
>



--
This, from Jach.

How many programmers does it take to change a light bulb?
None. It's a hardware problem.

How many Microsoft programmers does it take to change a light bulb?
None. Microsoft just declared darkness as the newest innovation in cutting-edge technology.