Ned Batchelder wrote: > I'm using PIL to composite a drop shadow onto an image. The blending > isn't working the way I would expect. The drop shadow image itself has > all black pixels, with all of the interesting stuff happening in the > alpha channel. I'm using Image.paste to draw the drop shadow, by > specifying the shadow png as both the image and the mask. > > When I do this on a pure black image, the shadow lightens the pixels! > For example, a black existing pixel gets a shadow pixel that is black > with alpha value of 152 decimal. The result should be black (since both > the source and the destination are black, how can the alpha channel > lighten the pixel?), but it comes out with a value of 100 decimal. > > When I graph the background color against the resulting color (using a > fixed black shadow pixel with 152 alpha), the result is linear, but as I > say, it lightens black pixels inexplicably. > > Is there something I am doing wrong?
sounds confusing, indeed. are you 100% sure that the source pixels are black ? what happens if you do paste("black", shadow) on a black image ? what happens on your machine if you do: >>> from PIL import Image >>> Image.VERSION '1.1.5' >>> bg = Image.new("RGB", (100, 100), "black") >>> bg.getcolors() [(10000, (0, 0, 0))] >>> shadow = Image.new("RGB", (100, 100), 0) >>> alpha = Image.new("L", (100, 100), None) >>> alpha.putdata(range(0,200,2)*100) >>> shadow.putalpha(alpha) >>> shadow.mode 'RGBA' >>> len(shadow.getcolors()) 100 >>> bg.paste(shadow, shadow) >>> bg.getcolors() [(10000, (0, 0, 0))] </F> _______________________________________________ Image-SIG maillist - Image-SIG@python.org http://mail.python.org/mailman/listinfo/image-sig