Ho notato che inizialmente fai uno switch in base al tipo di immagine, mentre in seguito non lo fai
ed utilizzi solamente:
Siccome tu dici:Codice PHP:
$source = imagecreatefromjpeg($_FILES['image']['tmp_name']);
Credo che il problema sia quello.Con le JPG tutto procede correttamente, ma se carica una GIF o una PNG, le immagini che escono sono interamente nere.