/** * 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; } }
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); } }
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; } }
public static function getInstance() { if (self::$instance === null) { self::$instance = new self; } return self::$instance; }