I’m trying to process an RGBA buffer (list of chars), and run “unpremultiply” on each pixel. The algorithm is color_out=color*255/alpha.
This is what I came up with:
def rgba_unpremultiply(data):
for i in range(0, len(data), 4):
a = ord(data[i+3])
if a != 0:
data[i] = chr(255*ord(data[i])/a)
data[i+1] = chr(255*ord(data[i+1])/a)
data[i+2] = chr(255*ord(data[i+2])/a)
return data
It works but causes a major drawback in performance.
I’m wondering besides writing a C module, what are my options to optimize this particular function?
This is exactly the kind of code NumPy is great for.