in reply to Setting opacity with dissolve in perlmagick

Hi, I think I found the answer for you. Change 'Dissolve' to 'Atop'. The following script works here like the shell version.

P.S. Don't feel like a dunce, I seem to remember spending a few hours trying every compose type when I discovered this a few years back. :-) I changed a few filenames and lowered the opacity for clarity.

#!/usr/bin/perl use warnings; use Image::Magick; use strict; #From the command line, this is the result I'd like to achieve: # composite -dissolve 87.8 foreground.jpg -size 500x500 xc:white outpu +t.jpg; # composite mask.png output.jpg output.jpg my $mask = Image::Magick->new(magick=>'png'); my $background = Image::Magick->new(magick=>'png'); my $foreground = Image::Magick->new(magick=>'png'); $mask->Read("png:zzzmask.png"); $background->Set(size=>'500x500'); $background->Read("xc:white"); $background->Set(magick=>'png'); $foreground->Read("zzzforeground.jpg"); $foreground->Set(magick=>'png'); $background->Composite(compose=>'Atop', image=>$foreground, opacity => + '50.8%' ); $background->Composite(image=>$mask); $background->Write("zzzpoutput.png"); exit; # The mask can be any png with transparency (any kind of watermark), # and foreground any 500x500 image.

I'm not really a human, but I play one on earth.
Old Perl Programmer Haiku ................... flash japh

Replies are listed 'Best First'.
Re^2: Setting opacity with dissolve in perlmagick
by shohn (Novice) on May 28, 2012 at 13:34 UTC
    Thanks a lot :) That worked. I spent quite a lot of time looking for how to achieve this, and only found lots of posts about people complaining that opacity wasn't working in perlmagick! Hopefully people will come across this in google when searching with a similar problem.