We then resize our image to the specified size, passing to it the temporary image pointer, the original image, and the 4 parameters dealing with the co-ordinates and size (similar to the ones passed in the setThumbnail() function.
GD has a built-in function to destroy the original image uploaded. We'll use this function once our image has been resized, followed by assigning the value of $tmp_resize, to our resized image object ($this->resize).
Because we're not storing our images in a database, we need to copy the file over to our new images to our desired directories, specified in our constant variables.
The imagejpeg() function will actually write the JPEG file information to a file that will now reside in the filesystem. We pass, as arguments, the thumbnail pointer ($this->thumb) and the object which will represent the actual thumbnail file ($this->thumbnail).
We then copy the image to our thumbnail directory, set the desired permissions (making use of PHP's chmod() function), and unlink/delete the temporary thumbnail image.