Jump to content

synritical

New Members
  • Posts

    3
  • Joined

  • Last visited

    Never

Posts posted by synritical

  1. Error is:

     

    Warning: imagesx() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\resize-class.php on line 30

     

    Warning: imagesy() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\resize-class.php on line 31

     

    Warning: imagecopyresampled() expects parameter 2 to be resource, boolean given in C:\xampp\htdocs\resize-class.php on line 73

     

    I'm guessing it has something to do with the class, which is

     

    		Class resize
    	{
    		// *** Class variables
    		private $image;
    	    private $width;
    	    private $height;
    		private $imageResized;
    
    		function __construct($fileName)
    		{
    			// *** Open up the file
    			$this->image = $this->openImage($fileName);
    
    		    // *** Get width and height
    		    $this->width  = imagesx($this->image);
    		    $this->height = imagesy($this->image);
    		}
    
    		## --------------------------------------------------------
    
    		private function openImage($file)
    		{
    			// *** Get extension
    			$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)
    			// *** Image to be resized is wider (landscape)
    			{
    				$optimalWidth = $newWidth;
    				$optimalHeight= $this->getSizeByFixedWidth($newWidth);
    			}
    			elseif ($this->height > $this->width)
    			// *** Image to be resized is taller (portrait)
    			{
    				$optimalWidth = $this->getSizeByFixedHeight($newHeight);
    				$optimalHeight= $newHeight;
    			}
    			else
    			// *** Image to be resizerd is a square
    			{
    				if ($newHeight < $newWidth) {
    					$optimalWidth = $newWidth;
    					$optimalHeight= $this->getSizeByFixedWidth($newWidth);
    				} else if ($newHeight > $newWidth) {
    					$optimalWidth = $this->getSizeByFixedHeight($newHeight);
    					$optimalHeight= $newHeight;
    				} else {
    					// *** Sqaure being resized to a square
    					$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;
    			}
    
    			$optimalHeight = $this->height / $optimalRatio;
    			$optimalWidth  = $this->width  / $optimalRatio;
    
    			return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight);
    		}
    
    		## --------------------------------------------------------
    
    		private function crop($optimalWidth, $optimalHeight, $newWidth, $newHeight)
    		{
    			$cropStartX = ( $optimalWidth / 2) - ( $newWidth /2 );
    			$cropStartY = ( $optimalHeight/ 2) - ( $newHeight/2 );
    
    			$crop = $this->imageResized;
    
    			$this->imageResized = imagecreatetruecolor($newWidth , $newHeight);
    			imagecopyresampled($this->imageResized, $crop , 0, 0, $cropStartX, $cropStartY, $newWidth, $newHeight , $newWidth, $newHeight);
    		}
    
    		## --------------------------------------------------------
    
    		public function saveImage($savePath, $imageQuality="100")
    		{
    			// *** Get extension
            		$extension = strrchr($savePath, '.');
           			$extension = strtolower($extension);
    
    			switch($extension)
    			{
    				case '.jpg':
    				case '.jpeg':
    					if (imagetypes() & IMG_JPG) {
    						imagejpeg($this->imageResized, $savePath, $imageQuality);
    					}
    					break;
    
    				case '.gif':
    					if (imagetypes() & IMG_GIF) {
    						imagegif($this->imageResized, $savePath);
    					}
    					break;
    
    				case '.png':
    					// *** Scale quality from 0-100 to 0-9
    					$scaleQuality = round(($imageQuality/100) * 9);
    
    					// *** Invert quality setting as 0 is best, not 9
    					$invertScaleQuality = 9 - $scaleQuality;
    
    					if (imagetypes() & IMG_PNG) {
    						 imagepng($this->imageResized, $savePath, $invertScaleQuality);
    					}
    					break;
    
    				// ... etc
    
    				default:
    					// *** THIS REQUIRES RECEPTION TO BE SOMEWHAT CLEVER. THEY MUST SPECIFY THE EXTENSION!!!
    					break;
    			}
    
    			imagedestroy($this->imageResized);
    		}

  2. Hello!

     

    I'm very new to PHP, and I'm sure this is a noob question - still, its got me stuck!

     

    How would I best escape this properly?

     

    $resizeObj = new resize('C:\xampp\htdocs\images_test\$file');

     

    so that $file is parsed?

     

    the whole script is as follows:

     

    <?php
    	// *** Include Nathan's class
    	include("resize-class.php");	
    
    	// Define the full path to your folder from root 
    	$path = 'C:\xampp\htdocs\images_test'; 
    
    	// Open the folder 
    	$dir_handle = @opendir($path) or die("Unable to open $path"); 
    
        // Loop through the files 
        while ($file = readdir($dir_handle)) { 
    
        if($file == "." || $file == ".." || $file == "index.php" ) 
    
            continue; 
    
    		// *** 1) Initialise / load image
    		$resizeObj = new resize('C:\xampp\htdocs\images_test\$file');
    		// *** 2) Resize image 
    		$resizeObj -> resizeImage(100, 100, 'auto');
    		// *** 3) Save image
    		$resizeObj -> saveImage('C:\xampp\htdocs\images_test\$file', 90);
    
            echo "<a href=\"$file\">$file</a><br />"; 
    	echo $path;
    
        } 
        // Close 
        closedir($dir_handle); 
    
    
    
    ?>

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.