Salve.
Ho la necessità di effettuare un merge tra due immagini.

Poniamo di avere la seguente immagine:



Come vedete ha uno sfondo bianco.

Quello che mi serve è creare una nuova immagine con Width ed Height scelto che abbia come sfondo il bianco ed in cui l'immagine di cui sopra sia centrata e "incollata" sopra quella da me creata.

Qua sotto quello che vorrei ottenere. Per esempio una immagine 300x300 a sfondo bianco con il logo centrato.



Per effettuare questa cosa ho pensato di creare una immagine da zero con createimage, fillarla di bianco e usare imagecopymerge per mettere quella originale a coordinate specifiche.

La cosa funziona ma il risultato non è quello sperato ma quello sotto:



Qui invece il codice che sto usando.
$imageInfo è un array che rappresenta l'immagine originale dove:

$imageInfo['color']['red']: contiene il codice del rosso del colore di sfondo (es. 255);
$imageInfo['color']['blue']: vedi sopra;
$imageInfo['color']['green']: vedi sopra;
$imageInfo['width'] : larghezza;
$imageInfo['height'] : altezza;
$imageInfo['img_source'] : contiene la risorsa immagine creata tramite la funzione imagecreatefromjpeg;

Codice PHP:
public function buildRealLogo($imageInfo,$width,$height){
        
$imgFinal imagecreate($width,$height);
        
imageantialias ($imgFinal,true);
        
//$background = imagecolorallocate($imgFinal,$imageInfo['color']['red'],$imageInfo['color']['green'], $imageInfo['color']['blue']);
        
$background imagecolorallocate($imgFinal,255,255,255);
        
imagefill ($imgFinal,1,1,$background);
        
$destX floor(($width/2)-($imageInfo['width']/2));
        
$destY floor(($height/2)-($imageInfo['height']/2));
        
imagecopymerge ($imgFinal,$imageInfo['img_resource'],$destX,$destY,1,1,$imageInfo['width'],$imageInfo['height'],50);
        return 
$imgFinal;        
    } 
Dove sbaglio?