Что-то вроде водяного знака, но только наоборот?
Почему наоборот? Ровно так же, если я правильно Вас понял.
Для водяного знака:
1) берётся исходное изображение,
2) берётся изображение с водяным знаком,
3) второе накладывается поверх первого,
4) результат сохраняется
В вашем случае:
0) пользователи отсылают форму с файлом фотографии и какими-то текстовыми полями (например, ФИО)
1) берётся изображение-шаблон пустого бейджа,
2) берётся изображение из присланной формы,
3) второе накладывается поверх первого,
4) также поверх пишется текст из текстовых полей,
5) результат сохраняется.
Это можно сделать средствами
GD.