Create a transparent png file using PHP
To 1)imagecreatefrompng('test.png')
tries to open the file test.png
which then can be edited with GD functions.
To 2)To enable saving of the alpha channel imagesavealpha($img, true);
is used.The following code creates a 200x200px sized transparent image by enabling alpha saving and filling it with transparency.
<?php$img = imagecreatetruecolor(200, 200);imagesavealpha($img, true);$color = imagecolorallocatealpha($img, 0, 0, 0, 127);imagefill($img, 0, 0, $color);imagepng($img, 'test.png');
Take a look at:
An example function copies transparent PNG files:
<?php function copyTransparent($src, $output) { $dimensions = getimagesize($src); $x = $dimensions[0]; $y = $dimensions[1]; $im = imagecreatetruecolor($x,$y); $src_ = imagecreatefrompng($src); // Prepare alpha channel for transparent background $alpha_channel = imagecolorallocatealpha($im, 0, 0, 0, 127); imagecolortransparent($im, $alpha_channel); // Fill image imagefill($im, 0, 0, $alpha_channel); // Copy from other imagecopy($im,$src_, 0, 0, 0, 0, $x, $y); // Save transparency imagesavealpha($im,true); // Save PNG imagepng($im,$output,9); imagedestroy($im); } $png = 'test.png'; copyTransparent($png,"png.png"); ?>
1) You can create a new png file without any existing one.2) You get a black color image because you use imagecreatetruecolor();
. It creates a highest quality image with a black background. As you need a lowest quality image use imagecreate();
<?php$tt_image = imagecreate( 100, 50 ); /* width, height */$background = imagecolorallocatealpha( $tt_image, 0, 0, 255, 127 ); /* In RGB colors- (Red, Green, Blue, Transparency ) */header( "Content-type: image/png" );imagepng( $tt_image );imagecolordeallocate( $background );imagedestroy( $tt_image );?>
You can read more in this article: How to Create an Image Using PHP