Come ti dicevo, questa funzione "presuppone" che ci sia già l'immagine nelle sue dimensioni originali salvata in una cartella del server. Quindi, quando tu esegui l'upload, dopo i controlli spedisci l'immagine in una cartella del server, dopo invochi la funzione. Io ho fatto la scelta di raggruppare le immagini in una stessa cartella ($album_path) che ha due sottocartelle, images/ (per le immagini in dimensioni normali) e thumbs/ (per le immagini ridotte). Se fai una scelta diversa devi modificare la funzione, magari passando 3 parametri alla funzione, del tipo

pvt_create_thumbnail($images_path, $thumbs_path, $img) {...}

Spero di essere stato d'aiuto