Re: [Image-SIG] Help with PIL, Imagemagick Composite function in PIL?

2007-04-10 Thread Alexey Borzenkov
On 4/10/07, César Pérez [EMAIL PROTECTED] wrote:
 Hi,
 I am new to this list but and i have a small problem with PIL.

 I am looking for a function that works like composite does in
 imagemagick.

[..snip..]

 from PIL import Image

 dtop = Image.open(dtop.png)
 frame = Image.open(frame.png)

 dtop.paste(frame,(0,0),frame)
 dtop.save(test.png)
 
 I tried every form of paste but I always get this result or worst.

The problem you have happens because alpha channel of images *also*
gets composited using the mask you specified. To do it right you
actually need to split image, save target image alpha channel and
after compositing merge it back using original alpha channel:

from PIL import Image

dtop = Image.open(dtop.png)
frame = Image.open(frame.png)

assert dtop.mode == RGBA
r,g,b,a = dtop.split()
dtop = Image.merge(RGB, (r,g,b))
dtop.paste(frame,(0,0),frame)
r,g,b = dtop.split()
dtop = Image.merge(RGBA, (r,g,b,a))
dtop.save(test.png)

Best regards,
Alexey.
___
Image-SIG maillist  -  Image-SIG@python.org
http://mail.python.org/mailman/listinfo/image-sig


Re: [Image-SIG] Help with PIL, Imagemagick Composite function in PIL?

2007-04-10 Thread César Pérez
Thanks to both of you and yes I was expecting the paste function to work
just like a paste in any Image Editor.

César

On Wed, 2007-04-11 at 11:48 +1200, Douglas Bagnall wrote:
 Alexey Borzenkov wrote:
 
  The problem you have happens because alpha channel of images *also*
  gets composited using the mask you specified. To do it right you
  actually need to split image, save target image alpha channel and
  after compositing merge it back using original alpha channel:
 
 Alexey,  I think you are completely right about the problem, but the
 solution can be quite a bit simpler:
 
 dtop = Image.open(dtop.png)
 frame = Image.open(frame.png)
 
 dtop.paste(frame.convert('RGB'), (0,0), frame)
 dtop.save(test.png)
 
 
 I would say that this alpha-merging quirk comes close to being a bug --
 it's probably not what most people expect.
 
 douglas
 

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