Досконально не смотрел, но первое что бросилось в глаза foreach для разрешенных форматов, жи есть просто. -
in_array
И еще какая-то глупость $function_save, непонятно без контекста что это вообще, но мне уже это не нравится.
Зачем createfrom*, вы даже не добавляете водные знаки.
Зачем столько сложностей с именем файла: substr, md5, rand, time, time