[magick-users] gradient to transparency

Fred Weinhaus fmw at alink.net
Fri Apr 11 10:23:05 PDT 2008


Try:



convert \( -size 100x100 gradient:red \) \
	\( +clone -colorspace Gray -gamma 1.0 \) \
	+matte -compose Copy_Opacity -composite out.png

The first line creates a 100x100 red gradient.
The second line converts a copy to grayscale and modified it by the 
non-linear function gamma. With gamma=1.0 there is no change. Gamma 
can be larger or smaller than 1.0. Gamma greater than 1 is similar to 
an exp and gamma less than 1 is similar to log ( I may have that 
backwards, but you get the idea). If you want some other function you 
can replace -gamm with -fx "somefunction"
The third line places the modified grayscale gradient into the 
transparency channel of the red gradient.

If you want to take an existing color gradient and place it over 
another image, then try something like

convert backgroundimage \
	\( gradientimage -colorspace Gray -gamma 1.0 \) \
	+matte -compose Copy_Opacity -composite out.png

Assuming the background and gradient images are the same size.



>I'm seeking for a general solution to allow for producing gradients
>from color to transparency either linearly or (even better) after
>some function (exp or other).
>
>Reason behind is producing shadows for images or weblayouts over
>their respective background image so that I get a smooth
>transition from some opaque shadow to transparency.
>
>Thanks a lot in advance.
>
>
>--
>Chris Christoph P. U. Kukulies


More information about the Magick-users mailing list