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); } }