Hi,
The "composite -watermark" command is not respecting the partial transparency of my PNG watermark.
I'm using ImageMagick 6.7.7-8 2012-06-20 Q16 (i.e., latest version) on Windows 2008.
Source JPG:
http://www.cuttingedgephotography.co.uk ... source.jpg
Partially-transparent PNG watermark:
http://www.cuttingedgephotography.co.uk ... ermark.png
Command:
composite -watermark 50% -gravity southeast watermark.png source.jpg output.jpg
This is what I get:
http://www.cuttingedgephotography.co.uk ... output.jpg
It seems that ImageMagick is ignoring my alpha transparency in my PNG, so any pixel that has any colour at all -- as long as it is not fully transparent -- is treated as a solid grey.
I have read about using -dissolve instead, and that gives me what I want:
http://www.cuttingedgephotography.co.uk ... lve_50.jpg
I'd like to know why it is not working with -watermark and/or if there is any workaround. From http://www.imagemagick.org/Usage/annota ... mark_image : "Before IM version 6, the options "-watermark" and "-dissolve" were broken with their handling of the alpha channel (transparency) for the overlaying image, producing some very strange effects". Perhaps this is fixed for -dissolve but still broken for -watermark? I guess I'll probably switch to "-dissolve" but I have a image-hosting framework where thousands of customers have built watermarks for use with "-watermark" and changing everything is risky. I'd like to at least know the full story. From the docs, it sounds like "-watermark" is *supposed* to support partial transparency.
Thanks,
Matt
partial transparency lost in composite -watermark
- fmw42
- Posts: 25562
- Joined: 2007-07-02T17:14:51-07:00
- Authentication code: 1152
- Location: Sunnyvale, California, USA
Re: partial transparency lost in composite -watermark
composite is very old. try the more current syntax
convert background watermark -define ... -compose modulate -composite output
see
http://www.imagemagick.org/script/compose.php
If that does not work, then it might be an issue of recent versions of IM have linear grayscale. So try
convert background watermark -set colorspace RGB -define ... -compose modulate -composite output
Let us know if any of this helps.
convert background watermark -define ... -compose modulate -composite output
see
http://www.imagemagick.org/script/compose.php
If that does not work, then it might be an issue of recent versions of IM have linear grayscale. So try
convert background watermark -set colorspace RGB -define ... -compose modulate -composite output
Let us know if any of this helps.
Re: partial transparency lost in composite -watermark
Hi Fred,
Thanks so much for response.
I'd already tried convert/-compose but, for me, they generated identical outputs to composite -dissolve and composite -watermark. So I don't think convert/-compose will help. Just now I also tried setting the colorspace to RGB & sRGB, but that did not cause my PNG alpha transparency to be detected/preserved.
Any other ideas? Anyone?
Regards,
Matt
Fred, here's what I got with convert/-compose... am I using these right?
convert source.jpg watermark.png -gravity southeast -compose dissolve -define compose:args=50,100 -composite output_compose_dissolve.jpg
output: http://www.cuttingedgephotography.co.uk ... ssolve.jpg (binary identical to "composite -dissolve ...")
convert source.jpg watermark.png -gravity southeast -compose modulate -define compose:args=50,100 -composite output_compose_modulate.jpg
output: http://www.cuttingedgephotography.co.uk ... dulate.jpg (binary identical to "composite -watermark ..."; same PNG alpha problem)
convert source.jpg watermark.png -set colorspace sRGB -gravity southeast -compose modulate -define compose:args=50,100 -composite output_compose_modulate_sRGB.jpg
output: http://www.cuttingedgephotography.co.uk ... e_sRGB.jpg (sRGB does not fix)
convert source.jpg watermark.png -set colorspace RGB -gravity southeast -compose modulate -define compose:args=50,100 -composite output_compose_modulate_RGB.jpg
output: http://www.cuttingedgephotography.co.uk ... te_RGB.jpg (RGB does not fix)
Thanks so much for response.
I'd already tried convert/-compose but, for me, they generated identical outputs to composite -dissolve and composite -watermark. So I don't think convert/-compose will help. Just now I also tried setting the colorspace to RGB & sRGB, but that did not cause my PNG alpha transparency to be detected/preserved.
Any other ideas? Anyone?
Regards,
Matt
Fred, here's what I got with convert/-compose... am I using these right?
convert source.jpg watermark.png -gravity southeast -compose dissolve -define compose:args=50,100 -composite output_compose_dissolve.jpg
output: http://www.cuttingedgephotography.co.uk ... ssolve.jpg (binary identical to "composite -dissolve ...")
convert source.jpg watermark.png -gravity southeast -compose modulate -define compose:args=50,100 -composite output_compose_modulate.jpg
output: http://www.cuttingedgephotography.co.uk ... dulate.jpg (binary identical to "composite -watermark ..."; same PNG alpha problem)
convert source.jpg watermark.png -set colorspace sRGB -gravity southeast -compose modulate -define compose:args=50,100 -composite output_compose_modulate_sRGB.jpg
output: http://www.cuttingedgephotography.co.uk ... e_sRGB.jpg (sRGB does not fix)
convert source.jpg watermark.png -set colorspace RGB -gravity southeast -compose modulate -define compose:args=50,100 -composite output_compose_modulate_RGB.jpg
output: http://www.cuttingedgephotography.co.uk ... te_RGB.jpg (RGB does not fix)
- fmw42
- Posts: 25562
- Joined: 2007-07-02T17:14:51-07:00
- Authentication code: 1152
- Location: Sunnyvale, California, USA
Re: partial transparency lost in composite -watermark
jta2010 wrote:Hi Fred,
Thanks so much for response.
I'd already tried convert/-compose but, for me, they generated identical outputs to composite -dissolve and composite -watermark. So I don't think convert/-compose will help. Just now I also tried setting the colorspace to RGB & sRGB, but that did not cause my PNG alpha transparency to be detected/preserved.
Any other ideas? Anyone?
Regards,
Matt
Fred, here's what I got with convert/-compose... am I using these right?
convert source.jpg watermark.png -gravity southeast -compose dissolve -define compose:args=50,100 -composite output_compose_dissolve.jpg
output: http://www.cuttingedgephotography.co.uk ... ssolve.jpg (binary identical to "composite -dissolve ...")
convert source.jpg watermark.png -gravity southeast -compose modulate -define compose:args=50,100 -composite output_compose_modulate.jpg
output: http://www.cuttingedgephotography.co.uk ... dulate.jpg (binary identical to "composite -watermark ..."; same PNG alpha problem)
convert source.jpg watermark.png -set colorspace sRGB -gravity southeast -compose modulate -define compose:args=50,100 -composite output_compose_modulate_sRGB.jpg
output: http://www.cuttingedgephotography.co.uk ... e_sRGB.jpg (sRGB does not fix)
convert source.jpg watermark.png -set colorspace RGB -gravity southeast -compose modulate -define compose:args=50,100 -composite output_compose_modulate_RGB.jpg
output: http://www.cuttingedgephotography.co.uk ... te_RGB.jpg (RGB does not fix)
I am not sure you watermark image is appropriate. The underlying image is just more or less gray with a white border. Furthermore, I am not sure you can use an 8-bit alpha channel, perhaps only binary alpha channel.
I tried changing the watermark background, but it still does the same. I really suspect, you may not be able to use an 8-bit alpha channel.
But Anthony is the best to answer this.
Can you produce something that works with an older version of IM using the same images?