+2  A: 

I think you are going at it the wrong way, if you are trying to have the transparent image appear on top of the colour then you need to fill first then copy the image.

Also if you are working with transparency you need to call imagecreatetruecolor(); instead of imagecreate();

private function GenerateImage()
{
        $original = imagecreatefrompng($this->ImagePath());

        $x = imagesx($original);
        $y = imagesy($original);

        $image = imagecreatetruecolor($x,$y);

        imagealphablending($image,true);
        imagesavealpha($image,true);

        $colour = imagecolorallocate($image,$this->RGB[0],$this->RGB[1],$this->RGB[2]);
        imagefill($image,0,0,$colour);

        imagecopyresampled($image,$original,0,0,0,0,$x,$y,$x,$y);

        return imagepng($image,$this->GeneratedPath());

        imagedestroy($original);
        imagedestroy($image);
}

If you are trying to draw the red on top of the image then use imagefilledrectangle() instead of imagefill(). For some reason imagefill doesn't seem to work well with transparencies.

// Replace
imagefill($image,0,0,$colour);
// With
imagefilledrectangle( $image, 0,0, $x,$y,$colour);
Kane Wallmann
Thank you! I love using GD with PHP but still have lots to learn with it.
Farid