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: 181

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:

make_transparent.py

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

Related posts about python

Related posts about algorithm