示例#1
0
 /**
  * Shrink the image.
  *
  * @param $fileName - the file name
  * @param $imageName - the file to upload
  * @throws ImageUploaderException
  */
 protected function applyShrink($fileName, $imageName)
 {
     if (!$this->shrinkImageTo) {
         return;
     }
     $oldImage = $this->getPixels($imageName);
     $newImage = $this->getNewImageSize($oldImage, false);
     $mimeType = $this->getMimeType($fileName);
     if ($mimeType == "gif") {
         if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/" . $_SESSION['SiteFolder'] . "GifFrames")) {
             mkdir($_SERVER['DOCUMENT_ROOT'] . "/" . $_SESSION['SiteFolder'] . "GifFrames", 0777);
         }
         $gr = new gifresizer();
         $gr->temp_dir = $_SERVER['DOCUMENT_ROOT'] . "/" . $_SESSION['SiteFolder'] . "GifFrames";
         $gr->resize($imageName, $fileName, $newImage["width"], $newImage["height"]);
         return;
     }
     $imgString = file_get_contents($imageName);
     $image = imagecreatefromstring($imgString);
     $tmp = imagecreatetruecolor($newImage["width"], $newImage["height"]);
     imagecopyresampled($tmp, $image, 0, 0, 0, 0, $newImage["width"], $newImage["height"], $oldImage["width"], $oldImage["height"]);
     switch ($mimeType) {
         case "jpeg":
         case "jpg":
             imagejpeg($tmp, $imageName, 100);
             break;
         case "png":
             imagepng($tmp, $imageName, 0);
             break;
             /*case "gif":
               imagegif($tmp, $imageName);
               break;*/
         /*case "gif":
           imagegif($tmp, $imageName);
           break;*/
         default:
             throw new ImageUploaderException(" Only jpg, jpeg, png and gif files can be resized ");
             break;
     }
 }
示例#2
0
    private function createThumb($src, $dist, $new_w, $new_h, $resize_type, $watermark) {
        if (file_exists($dist)) {
            if (!is_writable($dist)) { return false; }
            unlink($dist);
        }
        
        if (!in_array($resize_type, array('exact', 'auto', 'crop', 'portrait', 'landscape'))) {
            $resize_type = 'auto';
        }
        
        if (!in_array($watermark, array('lt', 'lc', 'lb', 'rt', 'rc', 'rb', 'tc', 'c', 'bc')) && $watermark !== false) {
            $watermark = 'rb';
        }
        
        if ((int)$new_w) {
            if (
                ($this->w < $new_w && $this->h < $new_h) || 
                ($resize_type == 'portrait' && $this->h < $new_h) || 
                ($resize_type == 'landscape' && $this->w < $new_w)
            ) {
                copy($src, $dist);
            } else {
                $new_size = $this->getNewImageSize($new_w, $new_h, $resize_type);
                
                if ($this->Imagick === true) {
                    $image = new Imagick($src);
                    
                    switch ($resize_type) {
                        case 'auto':
                            if ($this->ext == 'gif'){
                                foreach ($image as $img) {
                                    $img->resizeImage($new_w, $new_h, Imagick::FILTER_LANCZOS, 1, true);
                                    $img->setImagePage($img->getImageWidth(), $img->getImageHeight(), 0, 0);
                                }
                            } else {
                                $image->resizeImage($new_w, $new_h, Imagick::FILTER_LANCZOS, 1, true);
                            }
                            
                            break;
                        case 'portrait':
                            if ($this->ext == 'gif'){
                                foreach ($image as $img) {
                                    $img->resizeImage(0, $new_h, Imagick::FILTER_LANCZOS, 1);
                                    $img->setImagePage($img->getImageWidth(), $img->getImageHeight(), 0, 0);
                                }
                            } else {
                                $image->resizeImage(0, $new_h, Imagick::FILTER_LANCZOS, 1);
                            }
                            break;
                        case 'landscape':
                            if ($this->ext == 'gif'){
                                foreach ($image as $img) {
                                    $img->resizeImage($new_w, 0, Imagick::FILTER_LANCZOS, 1);
                                    $img->setImagePage($img->getImageWidth(), $img->getImageHeight(), 0, 0);
                                }
                            } else {
                                $image->resizeImage($new_w, 0, Imagick::FILTER_LANCZOS, 1);
                            }
                            break;
                        case 'exact':
                            if ($this->ext == 'gif'){
                                foreach ($image as $img) {
                                    $img->resizeImage($new_w, $new_h, Imagick::FILTER_LANCZOS, 1);
                                    $img->setImagePage($img->getImageWidth(), $img->getImageHeight(), 0, 0);
                                }
                            } else {
                                $image->resizeImage($new_w, $new_h, Imagick::FILTER_LANCZOS, 1);
                            }
                            break;
                        case 'crop':
                            if ($this->ext == 'gif') {
                                foreach ($image as $img) {
                                    $img->cropThumbnailImage($new_w, $new_h);
                                    $img->setImagePage($img->getImageWidth(), $img->getImageHeight(), 0, 0);
                                }
                            } else {
                                $image->cropThumbnailImage($new_w, $new_h);
                            }
                            break;
                    }
                    
                    $image->setImageCompressionQuality($this->quality);
                    
                    if ($this->ext == 'jpg') {
                        $image->setImageBackgroundColor('white');
                        $image->flattenImages();
                        $image = $image->flattenImages();
                        $image->setImageCompression(Imagick::COMPRESSION_JPEG);
                    }
                    
                    $image->setImageFormat($this->ext);
                    
                    if ($this->ext == 'gif') {
                        $image->writeimages($dist);
                    } else {
                        $image->writeimage($dist);
                    }

                    $image->destroy();
                } else {
                    $this->new_img = imagecreatetruecolor($new_size['w'], $new_size['h']);

                    imagecopyresampled($this->new_img, $this->old_img, 0, 0, 0, 0, $new_size['w'], $new_size['h'], $this->w, $this->h);

                    if ($resize_type == 'crop') {
                        $this->crop($new_size['w'], $new_size['h'], $new_w, $new_h);
                    }

                    if ($this->ext != 'gif' || $this->Imagick === true) {
                        $this->saveImage($dist, $this->ext);
                    } else {
                        $gif_resize = new gifresizer();
                        $gif_resize->resize($src, $dist, $new_w, $new_h);
                    }
                }
            }
            
            if (!empty($watermark)) {
                self::addWatermark($dist, false, $watermark);
            }
        } else if ($new_w == 'copy') {
            copy($src, $dist);
        }
    }
示例#3
0
文件: media.php 项目: politik86/test2
 function uploadImage($file_field, $max_zone_width, $max_zone_height = null, $fullPath, $relPath, $colorR, $colorG, $colorB, $new_media_width, $new_media_height, $blank_height, $top_offset, $media_extension, $file_name_without_extension)
 {
     switch ($this->media_type_group) {
         case "flash":
             jimport('joomla.filesystem.file');
             //Retrieve file details from uploaded file, sent from upload form
             $file = $_FILES[$file_field];
             //JRequest::getVar('ad_image', null, 'files', 'array');
             //Clean up filename to get rid of strange characters like spaces etc
             $filename = JFile::makeSafe($file['name']);
             //Set up the source and destination of the file
             $src = $file['tmp_name'];
             $filename = strtolower($filename);
             $filename = preg_replace('/\\s/', '_', $filename);
             $timestamp = time();
             $file_name_without_extension = $this->get_media_file_name_without_extension($filename);
             $filename = $file_name_without_extension . "_" . $timestamp . "." . $this->media_extension;
             $dest = JPATH_SITE . DS . "images" . DS . "socialads" . DS . "swf" . DS . $filename;
             //First check if the file has the right extension, we need swf only
             if (JFile::upload($src, $dest)) {
                 $dest = JUri::root() . "images" . DS . "socialads" . DS . "swf" . DS . $filename;
                 return $dest;
             }
             break;
         case "video":
             jimport('joomla.filesystem.file');
             //Retrieve file details from uploaded file, sent from upload form
             $file = $_FILES[$file_field];
             //JRequest::getVar('ad_image', null, 'files', 'array');
             //Clean up filename to get rid of strange characters like spaces etc
             $filename = JFile::makeSafe($file['name']);
             //Set up the source and destination of the file
             $src = $file['tmp_name'];
             $filename = strtolower($filename);
             $filename = preg_replace('/\\s/', '_', $filename);
             $timestamp = time();
             $file_name_without_extension = $this->get_media_file_name_without_extension($filename);
             $filename = $file_name_without_extension . "_" . $timestamp . "." . $this->media_extension;
             $dest = JPATH_SITE . DS . "images" . DS . "socialads" . DS . "vids" . DS . $filename;
             if (JFile::upload($src, $dest)) {
                 $dest = JUri::root() . "images" . DS . "socialads" . DS . "vids" . DS . $filename;
                 return $dest;
             }
             break;
     }
     $errorList = array();
     $folder = $relPath;
     $match = "";
     $filesize = $_FILES[$file_field]['size'];
     if ($filesize > 0) {
         $filename = strtolower($_FILES[$file_field]['name']);
         $filename = preg_replace('/\\s/', '_', $filename);
         if ($filesize < 1) {
             $errorList[] = JText::_('FILE_EMPTY');
         }
         if (count($errorList) < 1) {
             $match = "1";
             // File is allowed
             $NUM = time();
             $front_name = $file_name_without_extension;
             $newfilename = $front_name . "_" . $NUM . "." . $media_extension;
             $save = JPATH_SITE . DS . $folder . $newfilename;
             if (!file_exists($save)) {
                 list($this->width, $this->height) = getimagesize($_FILES[$file_field]['tmp_name']);
                 $image_p = imagecreatetruecolor($new_media_width, $blank_height);
                 $white = imagecolorallocate($image_p, $colorR, $colorG, $colorB);
                 //START added to preserve transparency
                 imagealphablending($image_p, false);
                 imagesavealpha($image_p, true);
                 $transparent = imagecolorallocatealpha($image_p, 255, 255, 255, 127);
                 imagefill($image_p, 0, 0, $transparent);
                 //END added to preserve transparency
                 switch ($media_extension) {
                     case "gif":
                         $gr = new gifresizer();
                         //New Instance Of GIFResizer
                         //echo
                         $gr->temp_dir = JPATH_SITE . DS . $folder . 'frames';
                         //Used for extracting GIF Animation Frames
                         //if folder is not present create it
                         if (!JFolder::exists($gr->temp_dir)) {
                             @mkdir($gr->temp_dir);
                         }
                         //$gr->resize("gifs/1.gif","resized/1_resized.gif",50,50); //Resizing the animation into a new file.
                         $gr->resize($_FILES[$file_field]['tmp_name'], $save, $new_media_width, $new_media_height);
                         //Resizing the animation into a new file.
                         break;
                     case "jpg":
                         $image = @imagecreatefromjpeg($_FILES[$file_field]['tmp_name']);
                         @imagecopyresampled($image_p, $image, 0, $top_offset, 0, 0, $new_media_width, $new_media_height, $this->width, $this->height);
                         break;
                     case "jpeg":
                         $image = @imagecreatefromjpeg($_FILES[$file_field]['tmp_name']);
                         @imagecopyresampled($image_p, $image, 0, $top_offset, 0, 0, $new_media_width, $new_media_height, $this->width, $this->height);
                         break;
                     case "png":
                         $image = @imagecreatefrompng($_FILES[$file_field]['tmp_name']);
                         @imagecopyresampled($image_p, $image, 0, $top_offset, 0, 0, $new_media_width, $new_media_height, $this->width, $this->height);
                         break;
                 }
                 switch ($media_extension) {
                     /*
                     case "gif":
                     	if(!@imagegif($image_p, $save)){
                     		$errorList[]= JText::_('FILE_GIF');
                     	}
                     
                     break;
                     */
                     case "jpg":
                         if (!@imagejpeg($image_p, $save, 100)) {
                             $errorList[] = JText::_('FILE_JPG');
                         }
                         break;
                     case "jpeg":
                         if (!@imagejpeg($image_p, $save, 100)) {
                             $errorList[] = JText::_('FILE_JPEG');
                         }
                         break;
                     case "png":
                         if (!@imagepng($image_p, $save, 0)) {
                             $errorList[] = JText::_('FILE_PNG');
                         }
                         break;
                 }
                 @imagedestroy($filename);
             } else {
                 $errorList[] = JText::_('FILE_EXIST');
             }
         }
     } else {
         $errorList[] = JText::_('FILE_NO');
     }
     if (!$match) {
         $errorList[] = JText::_('FILE_ALLOW') . ":" . $filename;
     }
     if (sizeof($errorList) == 0) {
         return $fullPath . $newfilename;
     } else {
         $eMessage = array();
         for ($x = 0; $x < sizeof($errorList); $x++) {
             $eMessage[] = $errorList[$x];
         }
         return $eMessage;
     }
 }
示例#4
0
 public static function getInstance() {
     if (self::$instance === null) {
         self::$instance = new self;
     }
     return self::$instance;
 }