opensubscriber
   Find in this group all groups
 
Unknown more information…

i : image-sig@python.org 25 October 2011 • 6:20PM -0400

[Image-SIG] PIL: pasting RGBA images to RGBA images
by rmri

REPLY TO AUTHOR
 
REPLY TO GROUP





Hello Everyone,

I have a problem pasting RGBA images to RGBA images.
It's a bit hard to describe the output, but it seems like the alpha channel of the original image is affected by the pasted image alpha channel, so the original images becomes transparent in places it wasn't before.
I googled around and only found answers regarding the third "mask" parameter of the paste function, but that didn't help in the case of two RGBA images.
In most PIL use cases people paste RGBA images to RGB images (ex. watermarking images) so the current setup doesn't result in any artifacts, but in my case with two RGBA images it does.

I looked further in the source code and found the related code in Paste.c:

Line 134:
paste_mask_RGBA()
….
for (i = 0; i < pixelsize; i++) {
*out = BLEND(*mask, *out, *in, tmp1, tmp2);
out++, in++;
}


So all 4 channels (R,G,B,A) are handled the same way.

I looked up the topic and found this useful Cairo project page which describes all of the widely used operators in image processing but none of them seemed to match this behavior. (http://cairographics.org/operators/)
Finally I modified the source code to my needs, and implemented the CAIRO_OPERATOR_OVER for PIL, handling the alpha channel blending separately, following the description in the Cairo docs.


But I am still wondering if anybody ever had the same problem, or if there is some more simple and elegant solution by just parametrize the PIL functions differently? (I couldn't find one)
Also I think the CAIRO_OPERATOR_OVER behavior is the one that most people would expect from a paste function so I would recommend to change the source code accordingly if no simple solution is available.


Thanks for your answers in advance, I hope my description is clear enough.

Daniel




_______________________________________________
Image-SIG maillist  -  Image-SIG@pyth...
http://mail.python.org/mailman/listinfo/image-sig

Bookmark with:

Delicious   Digg   reddit   Facebook   StumbleUpon

opensubscriber is not affiliated with the authors of this message nor responsible for its content.