puoi usare facilmente le librerie GD da PHP... dai un'occhiata ai comandi:
- imagecreatetruecolor
- imagecopyresampled
- imagecreatefrompng (e simili)
- imagestring (e simili)
e altre affini...
con la prima puoi "creare" un'immagine ex-novo e poi "caricarci" dentro le altre con il secondo comando dopo averle opportunamente inizializzate (p.es. con il terzo comando), in pratica: prima crei due immagini (sfondo, prelevando un tuo file già sul server e primo piano, usando il file uploadato) usando imagecreatefrompng (o simili, a seconda del tipo di formato) e una terza "vuota" con imagecreatetruecolor, poi con imagecopyresampled riproduci lo sfondo e l'immagine
dentro l'ultima "vuota". Oppure puoi direttamente usare imagecopyresampled per inserire il file uploadato "sopra" lo sfondo.
Con l'ultimo comando puoi "inserire" le scritte.