Вы можете создать базовое изображение с помощью этого:
imagecreatefromjpeg () & imagecreatefrompng ()
Вы можете определить, какой из них использовать, получив информацию об изображении с помощью getimagesize ().
После того как у вас есть базовое изображение, вы можете сделать то же самое с пользовательским изображением и скопировать его в базовое изображение с помощью imagecopyresized ()
Вы можете увидеть несколько полезных примеров комментариев пользователей по адресу: php.net / imagecopyresized
Я надеюсь, что это ответит на ваш вопрос, если не просто спросить меня, и я найду время, чтобы дать вам более полный ответ.