synritical Posted October 26, 2011 Share Posted October 26, 2011 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); ?> Quote Link to comment https://forums.phpfreaks.com/topic/249849-escaping-a-php-variable/ Share on other sites More sharing options...
gristoi Posted October 26, 2011 Share Posted October 26, 2011 two choices: <?php $resizeObj = new resize('C:\xampp\htdocs\images_test\'. $file .''); or use double quotes: <?php $resizeObj = new resize("C:\xampp\htdocs\images_test\$file"); Quote Link to comment https://forums.phpfreaks.com/topic/249849-escaping-a-php-variable/#findComment-1282432 Share on other sites More sharing options...
synritical Posted October 26, 2011 Author Share Posted October 26, 2011 Thanks for your reply! However, I already tried both of those ways - using double quotes causes it to be interpreted literally as $file, ie not render the variable at all. Using double quotes throws up a PHP error. Stuck! Quote Link to comment https://forums.phpfreaks.com/topic/249849-escaping-a-php-variable/#findComment-1282434 Share on other sites More sharing options...
Pikachu2000 Posted October 26, 2011 Share Posted October 26, 2011 And what is that error? Is it something about an undefined variable by chance? Quote Link to comment https://forums.phpfreaks.com/topic/249849-escaping-a-php-variable/#findComment-1282437 Share on other sites More sharing options...
synritical Posted October 26, 2011 Author Share Posted October 26, 2011 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); } Quote Link to comment https://forums.phpfreaks.com/topic/249849-escaping-a-php-variable/#findComment-1282440 Share on other sites More sharing options...
jcbones Posted October 26, 2011 Share Posted October 26, 2011 two choices: <?php $resizeObj = new resize('C:\xampp\htdocs\images_test\'. $file .''); or use double quotes: <?php $resizeObj = new resize("C:\xampp\htdocs\images_test\$file"); Neither of those will work, because in the first one, you are escaping the quote, and the second one, you are escaping the dollar sign. <?php $resizeObj = new resize('C:\xampp\htdocs\images_test\\'. $file); OR <?php $resizeObj = new resize("C:\xampp\htdocs\images_test\\$file"); See the interpreter here actually catches it. Quote Link to comment https://forums.phpfreaks.com/topic/249849-escaping-a-php-variable/#findComment-1282504 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.