Image Gurus: Optimize my Python PNG transparency function
        Posted  
        
            by ozone
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by ozone
        
        
        
        Published on 2010-06-15T13:05:52Z
        Indexed on 
            2010/06/15
            13:42 UTC
        
        
        Read the original article
        Hit count: 237
        
I need to replace all the white(ish) pixels in a PNG image with alpha transparency.
I'm using Python in AppEngine and so do not have access to libraries like PIL, imagemagick etc. AppEngine does have an image library, but is pitched mainly at image resizing.
I found the excellent little pyPNG module and managed to knock up a little function that does what I need:
pseudo-code for the main loop would be something like:
for each pixel:
    if pixel looks "quite white":
        set pixel values to transparent
    otherwise:
        keep existing pixel values
and (assuming 8bit values) "quite white" would be:
where each r,g,b value is greater than "240" 
AND each r,g,b value is within "20" of each other
This is the first time I've worked with raw pixel data in this way, and although works, it also performs extremely poorly. It seems like there must be a more efficient way of processing the data without iterating over each pixel in this manner? (Matrices?)
I was hoping someone with more experience in dealing with these things might be able to point out some of my more obvious mistakes/improvements in my algorithm.
Thanks!
© Stack Overflow or respective owner