using php to generate transparent thumbnails

I can't take any credit for writing the code below and can't remember where I got it from, but I think it is worth sharing as I know how painful it was trying to generate thumbnails with a 'decent' transparent background.

This works and has only been tested with *.PNG files only. The important bit is to use the imagecreatetruecolortransparent() function detailed below, instead of php's standard imagecreatetruecolor(). The new function does a similar thing, but also creates a new image with an actual transparent background and not a specific colour (normally black and then try to filter that colour out)...

Just try it, it works great...

$w = 50; //width
$h = 50; //height
$srcFile = ""; //selected file

$dest = imagecreatetruecolortransparent($w, $h);
$src = imagecreatefrompng($srcFile);

imagecopyresampled($dest, $src, 0, 0, 0, 0, $w, $h, $size[0], $size[1]);

return $dest;

function imagecreatetruecolortransparent($x, $y)
{
$i = imagecreatetruecolor($x, $y);
$b = imagecreatefromstring(base64_decode(blankpng()));
imagealphablending($i, false);
imagesavealpha($i, true);
imagecopyresized($i, $b ,0 ,0 ,0 ,0 ,$x, $y, imagesx($b), imagesy($b));
return $i;
}

function blankpng()
{
$c = "iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAAC";
$c .= "M/rhtAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m";
$c .= "dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAA";
$c .= "DqSURBVHjaYvz//z/DYAYAAcTEMMgBQAANegcCBNCg";
$c .= "dyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCB";
$c .= "NCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAAN";
$c .= "egcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQ";
$c .= "AANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQ";
$c .= "oHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAg";
$c .= "TQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAA";
$c .= "DXoHAgTQoHcgQAANegcCBNCgdyBAgAEAMpcDTTQWJ";
$c .= "VEAAAAASUVORK5CYII=";
return $c;
}