Example #1
0
 /**
  * Resize the image file into the given width and height
  * @param  string|array $dimensions   The dimension or array of dimensions,
  *    e.g., '400x250' or array('400x250', '200x150')
  * @param  string       $file         The source file
  * @param  string       $newFileName  The new file name to be created
  * @param  string       $extension    The file extension
  * @return string       The new file name or null if any error occurs
  */
 protected function resizeImageByDimension($dimensions, $file, $newFileName, $extension = null)
 {
     $dimensions = is_string($dimensions) ? array($dimensions) : $dimensions;
     $extension = $extension ? $extension : strtolower(pathinfo($file, PATHINFO_EXTENSION));
     if ($extension == "jpg" || $extension == "jpeg") {
         $img = imagecreatefromjpeg($file);
     } elseif ($extension == "png") {
         $img = imagecreatefrompng($file);
     } elseif ($extension == "gif") {
         $img = imagecreatefromgif($file);
     }
     if (isset($img) && $img) {
         if (isset($this->imageFilterSet['jpgQuality']) && is_numeric($this->imageFilterSet['jpgQuality'])) {
             $jpgQuality = $this->imageFilterSet['jpgQuality'];
         } else {
             $jpgQuality = 75;
         }
         foreach ($dimensions as $dimension) {
             $resize = explode('x', $dimension);
             $resizeWidth = $resize[0];
             $resizeHeight = $resize[1];
             if ($this->imageFilterSet['resizeMode'] == FILE_RESIZE_WIDTH) {
                 $tmp = File::resizeImageWidth($img, $file, $resizeWidth);
             } elseif ($this->imageFilterSet['resizeMode'] == FILE_RESIZE_HEIGHT) {
                 $tmp = File::resizeImageHeight($img, $file, $resizeHeight);
             } else {
                 $tmp = File::resizeImageBoth($img, $file, $resizeWidth, $resizeHeight);
             }
             $targetDir = is_string(func_get_arg(0)) ? $this->uploadPath : $this->uploadPath . $dimension . _DS_;
             if (!is_dir($targetDir)) {
                 @mkdir($targetDir, 0777, true);
             }
             $targetFileName = $targetDir . $newFileName;
             if ($extension == "gif") {
                 imagegif($tmp, $targetFileName);
             } elseif ($extension == "png") {
                 imagesavealpha($tmp, true);
                 imagepng($tmp, $targetFileName);
             } else {
                 imagejpeg($tmp, $targetFileName, $jpgQuality);
             }
             imagedestroy($tmp);
         }
         if ($img) {
             imagedestroy($img);
             return $newFileName;
         }
     } else {
         $this->error = array('code' => FILE_UPLOAD_ERR_IMAGE_CREATE, 'message' => $this->getErrorMessage(FILE_UPLOAD_ERR_IMAGE_CREATE));
     }
     return null;
 }