function upload()
 {
     // Default settings/restrictions
     $config['upload_path'] = $this->directory;
     $config['allowed_types'] = 'gif|jpg|png|jpeg';
     $config['max_size'] = min(maxUploadSizeBytes() / 1024, self::MAX_FILE_SIZE_KB);
     $config['max_width'] = '0';
     // no restriction (image will be resized anyway!)
     $config['max_height'] = '0';
     $config['max_filename'] = self::MAX_FILE_NAME_LEN;
     $this->load->library('upload', $config);
     // Try and upload the file using the settings from __construct()
     if (!$this->upload->do_upload('new_file')) {
         // Abort upload and display errors, if any
         $data['error_message'] = $this->upload->display_errors();
         $data['recent_uploads'] = $this->getRecentUploads();
         $data['title'] = "Image Uploader";
         $data['js_lib'] = array('core');
         $this->load->view('uploader', $data);
     } else {
         // Create the compressed copy of the image based on a hash of the uploaded filename
         $upload_result = $this->upload->data();
         $image = new Imagick($this->directory . $upload_result['file_name']);
         $image->setBackgroundColor(new ImagickPixel('white'));
         // Create the optimised image
         // "bestfit" param will ensure that the image is downscaled proportionally if needed
         // if ($image->getImageWidth() >= $image->getImageHeight()
         // 	&& $image->getImageWidth() > self::IMAGE_LANDSCAPE_WIDTH || $image->getImageHeight() > self::IMAGE_LANDSCAPE_HEIGHT)
         // {
         // 	$image->resizeImage(self::IMAGE_LANDSCAPE_WIDTH,self::IMAGE_LANDSCAPE_HEIGHT, Imagick::FILTER_LANCZOS, 1, true);
         // }
         // else if ($image->getImageWidth() > self::IMAGE_PORTRAIT_WIDTH || $image->getImageHeight() > self::IMAGE_PORTRAIT_HEIGHT)
         // {
         // 	$image->resizeImage(self::IMAGE_PORTRAIT_WIDTH,self::IMAGE_PORTRAIT_HEIGHT, Imagick::FILTER_LANCZOS, 1, true);
         // }
         $flattened = new IMagick();
         $flattened->newImage($image->getImageWidth(), $image->getImageHeight(), new ImagickPixel("white"));
         $flattened->compositeImage($image, imagick::COMPOSITE_OVER, 0, 0);
         $flattened->setImageFormat("jpg");
         $flattened->setImageCompression(Imagick::COMPRESSION_JPEG);
         // $flattened->setCompression(Imagick::COMPRESSION_JPEG);
         // $flattened->setCompressionQuality(self::COMPRESSION_PERCENTAGE);
         $flattened->writeImage($this->directory . 'img_' . md5($upload_result['file_name']) . ".jpg");
         $flattened->clear();
         $flattened->destroy();
         $image->clear();
         $image->destroy();
         $data['success_message'] = "File successfully uploaded!";
         $data['recent_uploads'] = $this->getRecentUploads();
         $data['title'] = "Image Uploader";
         $data['js_lib'] = array('core');
         $data['max_filesize'] = $config['max_size'];
         $this->load->view('uploader', $data);
     }
 }