From: Feng Yu <rai...@gm...> - 2011-10-05 22:40:06
|
Dear Lists, I tried to draw a white block with alpha-channel gradient on top of black. The result appears to be non-linear, and I think it is problematic. image = ones((255, 255, 4), dtype='u1') image[:, :, 0:3] = 255 image[:, :, 3] = arange(0, 255)[:, newaxis] gca().set_axis_bgcolor('k') imshow(image) The color of the pixel with alpha = 128 is about (30, 30, 30). We can confirm this with cla() image[:, :, 3] = 128 imshow(image) On Inkscape, a white block with alpha = 128 on top of a black box gives a final color of r,g,b=128, 128, 128. I did a rough fit and apparently matplotlib is calculating the final pixel brightness with (notice the original pixel is 0) r = cr * (alpha / 255.) ** 3 , (same for g and b) shouldn't it be r = cr * alpha / 255? This affects matplotlib-1.0.1 and a not so recent copy of the git master(ba4043a35d4c2). Regards, Yu |