Fublin, я gd знаю хорошо,если что то это я и с телефона подправлю. Только маленький ньюанс на заметку для водяного знака лудше юзать imagecolorallocatealpha() так хоть он полупрозрачным будет.
$imageinfo = @getimagesize($im1); Я бы заменила на imagesx($img) , imagesy($img) и еще imagedestroy($im1); вобще удали это у тебя там с какого перепуга взялось?