15.7. Getting and Setting a Transparent Color
Problem
You want to set one of an image’s colors as transparent. When the image is overlayed on a background, the background shows through the transparent section of the image.
Solution
Use ImageColorTransparent( )
:
$color = ImageColorAllocate($image, $red, $green, $blue); ImageColorTransparent($image, $color);
Discussion
Both GIFs and PNGs support transparencies; JPEGs, however, do not. To
refer to the transparent color within GD, use the constant
IMG_COLOR_TRANSPARENT
. For example,
here’s how to make a
dashed line that alternates between
black and transparent:
// make a two-pixel thick black and white dashed line $style = array($black, $black, IMG_COLOR_TRANSPARENT, IMG_COLOR_TRANSPARENT); ImageSetStyle($image, $style);
To find the current transparency setting, take the return value of
ImageColorTransparent( )
and pass it to
ImageColorsForIndex( )
:
$transparent = ImageColorsForIndex($image, ImageColorTransparent($image)); print_r($transparent); Array ( [red] => 255 [green] => 255 [blue] => 255 )
The ImageColorsForIndex( )
function returns an
array with the red, green, and blue values. In this case, the
transparent color is white.
See Also
Documentation on ImageColorTransparent( )
at
http://www.php.net/imagecolortransparent and on
ImageColorsForIndex( )
at
http://www.php.net/imagecolorsforindex.
Get PHP Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.