Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- Class resize
- {
- private $image;
- private $width;
- private $height;
- private $imageResized;
- function __construct($fileName)
- {
- $this->image = $this->openImage($fileName);
- $this->width = imagesx($this->image);
- $this->height = imagesy($this->image);
- }
- private function openImage($file)
- {
- $extension = strtolower(strrchr($file,'.'));
- switch($extension)
- {
- case '.jpg':
- case '.jpeg':
- $img = @imagecreatefromjpeg($file);
- break;
- case '.gif':
- $img = @imagecreatefromgif($file);
- break;
- case '.png':
- $img = @imagecreatefrompng($file);
- break;
- default:
- $img = false;
- break;
- }
- return $img;
- }
- public function resizeImage($newWidth,$newHeight,$option="auto")
- {
- $optionArray = $this->getDimensions($newWidth,$newHeight,$option);
- $optimalWidth = $optionArray['optimalWidth'];
- $optimalHeight = $optionArray['optimalHeight'];
- $this->imageResized = imagecreatetruecolor($optimalWidth,$optimalHeight);
- imagecopyresampled($this->imageResized,$this->image,0,0,0,0,$optimalWidth,$optimalHeight,$this->width,$this->height);
- if ($option == 'crop') {
- $this->crop($optimalWidth,$optimalHeight,$newWidth,$newHeight);
- }
- }
- private function getDimensions($newWidth,$newHeight,$option)
- {
- switch ($option)
- {
- case 'exact':
- $optimalWidth = $newWidth;
- $optimalHeight= $newHeight;
- break;
- case 'portrait':
- $optimalWidth = $this->getSizeByFixedHeight($newHeight);
- $optimalHeight= $newHeight;
- break;
- case 'landscape':
- $optimalWidth = $newWidth;
- $optimalHeight= $this->getSizeByFixedWidth($newWidth);
- break;
- case 'auto':
- $optionArray = $this->getSizeByAuto($newWidth,$newHeight);
- $optimalWidth = $optionArray['optimalWidth'];
- $optimalHeight = $optionArray['optimalHeight'];
- break;
- case 'crop':
- $optionArray = $this->getOptimalCrop($newWidth,$newHeight);
- $optimalWidth = $optionArray['optimalWidth'];
- $optimalHeight = $optionArray['optimalHeight'];
- break;
- }
- return array('optimalWidth'=>$optimalWidth,'optimalHeight'=>$optimalHeight);
- }
- private function getSizeByFixedHeight($newHeight)
- {
- $ratio = $this->width / $this->height;
- $newWidth = $newHeight * $ratio;
- return $newWidth;
- }
- private function getSizeByFixedWidth($newWidth)
- {
- $ratio = $this->height / $this->width;
- $newHeight = $newWidth * $ratio;
- return $newHeight;
- }
- private function getSizeByAuto($newWidth,$newHeight)
- {
- if ($this->height <$this->width)
- {
- $optimalWidth = $newWidth;
- $optimalHeight= $this->getSizeByFixedWidth($newWidth);
- }
- elseif ($this->height >$this->width)
- {
- $optimalWidth = $this->getSizeByFixedHeight($newHeight);
- $optimalHeight= $newHeight;
- }
- else
- {
- if ($newHeight <$newWidth) {
- $optimalWidth = $newWidth;
- $optimalHeight= $this->getSizeByFixedWidth($newWidth);
- }else if ($newHeight >$newWidth) {
- $optimalWidth = $this->getSizeByFixedHeight($newHeight);
- $optimalHeight= $newHeight;
- }else {
- $optimalWidth = $newWidth;
- $optimalHeight= $newHeight;
- }
- }
- return array('optimalWidth'=>$optimalWidth,'optimalHeight'=>$optimalHeight);
- }
- private function getOptimalCrop($newWidth,$newHeight)
- {
- $heightRatio = $this->height / $newHeight;
- $widthRatio = $this->width / $newWidth;
- if ($heightRatio <$widthRatio) {
- $optimalRatio = $heightRatio;
- }else {
- $optimalRatio = $widthRatio;
- }
- // ================================== PAYMENT ====================================//
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement