ma il codice è corretto?

Se fai una prova semplice semplice cosi:
codice:
$im = imagecreatetruecolor('example.jpg');
// sets background to red
$background = imagecolorallocate($im, 255, 0, 0);

funziona?