Il y a deux questions ici, la première, c'est comment sélectionner aléatoirement 3 valeurs dans un tableau, la seconde, comment fusionner 3 images avec les conditions que tu as fixé.
Pour la première, tu as une fonction toute faite pour le faire, c'est array_rand().
Pour la seconde, tu as la librairie gd. Il faut que tu utilises les fonctions :
-imagecreatefrompng(), imagecreatefromjpeg(), imagecreatefromgif(), ..., selon le type de l'image. Tu dois l'utiliser pour les 3 images.
-imagecreate() pour créer une nouvelle image aux dimensions souhaitées.
-imagecopy() pour copier une image sur une autre.
-imagepng(), imagejpeg(), imagegif() pour afficher ou enregistrer l'image résultat.
Par contre, si tu as des images distantes, du fait qu'il est long d'accéder à un fichier distant, il est très conseillé de télécharger une fois pour toutes les images sur ton serveur, sans quoi tu vas avoir des gros ralentissements.
Et d'autre part, si tu pouvais générer les images le moins souvent possible, ca t'économisera des ressources.