tags:

views:

942

answers:

3

When using the function imagepng() in php, how can I make sure the images that I save are saved with a transparent background?

+1  A: 

Simply do this:

imagealphablending($img, false);
imagesavealpha($img, true);

Before outputting. Make sure that all source files (if you used any) are set to PNG 32-bit with transparency - if not the output may differ with black background or transparency does not comply.

thephpdeveloper
Transparency is often called "alpha".
Ewan Todd
A: 

There's a function called imagecolortransparent that allows you to set which color is made transparent. I don't know if this answers your question.

lamelas
+1  A: 

Here is an example of the imagecolortransparent function (if it helps):

<?php
// Create a 55x30 image
$im = imagecreatetruecolor(55, 30);
$red = imagecolorallocate($im, 255, 0, 0);
$black = imagecolorallocate($im, 0, 0, 0);

// Make the background transparent
imagecolortransparent($im, $black);

// Draw a red rectangle
imagefilledrectangle($im, 4, 4, 50, 25, $red);

// Save the image
imagepng($im, './imagecolortransparent.png');
imagedestroy($im);
?>

from the PHP manual: http://php.net/manual/en/function.imagecolortransparent.php

Eric
Eric beat me to it here. Later on the same page, someone comments, "When you use palette images (created with imagecreate()), the first color allocated is the background color. This color cannot be used for transparency. So if you want to make the background transparent, first allocate a dummy background color, then allocate the real background color and declare this is as transparent."
Ewan Todd