This script uses a class which should be included on the page where you want to make thumbnail or resize the original image. This class should be saved as thumb_class.php, its complete code is mentioned below:
thumb_class.php
<?php // Imaging class imaging { // Variables private $img_input; private $img_output; private $img_src; private $format; private $quality = 80; private $x_input; private $y_input; private $x_output; private $y_output; private $resize; // Set image public function set_img($img) { // Find format $ext = strtoupper(pathinfo($img, PATHINFO_EXTENSION)); // JPEG image if(is_file($img) && ($ext == "JPG" OR $ext == "JPEG")) { $this->format = $ext; $this->img_input = ImageCreateFromJPEG($img); $this->img_src = $img; } // PNG image elseif(is_file($img) && $ext == "PNG") { $this->format = $ext; $this->img_input = ImageCreateFromPNG($img); $this->img_src = $img; } // GIF image elseif(is_file($img) && $ext == "GIF") { $this->format = $ext; $this->img_input = ImageCreateFromGIF($img); $this->img_src = $img; } // Get dimensions $this->x_input = imagesx($this->img_input); $this->y_input = imagesy($this->img_input); } // Set maximum image size (pixels) public function set_size($max_x = 100,$max_y = 100) { // Resize if($this->x_input > $max_x || $this->y_input > $max_y) { $a= $max_x / $max_y; $b= $this->x_input / $this->y_input; if ($a<$b) { $this->x_output = $max_x; $this->y_output = ($max_x / $this->x_input) * $this->y_input; } else { $this->y_output = $max_y; $this->x_output = ($max_y / $this->y_input) * $this->x_input; } // Ready $this->resize = TRUE; } // Don't resize else { $this->resize = FALSE; } } // Set image quality (JPEG only) public function set_quality($quality) { if(is_int($quality)) { $this->quality = $quality; } } // Save image public function save_img($path) { // Resize if($this->resize) { $this->img_output = ImageCreateTrueColor($this->x_output, $this->y_output); ImageCopyResampled($this->img_output, $this->img_input, 0, 0, 0, 0, $this->x_output, $this->y_output, $this->x_input, $this->y_input); } // Save JPEG if($this->format == "JPG" OR $this->format == "JPEG") { if($this->resize) { imageJPEG($this->img_output, $path, $this->quality); } else { copy($this->img_src, $path); } } // Save PNG elseif($this->format == "PNG") { if($this->resize) { imagePNG($this->img_output, $path); } else { copy($this->img_src, $path); } } // Save GIF elseif($this->format == "GIF") { if($this->resize) { imageGIF($this->img_output, $path); } else { copy($this->img_src, $path); } } } // Get width public function get_width() { return $this->x_input; } // Get height public function get_height() { return $this->y_input; } // Clear image cache public function clear_cache() { @ImageDestroy($this->img_input); @ImageDestroy($this->img_output); } } class thumbnail extends imaging { private $image; private $width; private $height; function __construct($image,$width,$height,$dir) { parent::set_img($image); parent::set_quality(80); parent::set_size($width,$height); $image_temp=explode('/',$image); $image_temp1=$image_temp[count($image_temp)-1]; $this->thumbnail= $dir.$image_temp1; parent::save_img($this->thumbnail); parent::clear_cache(); } function __toString() { return $this->thumbnail; } } ?>Example Usage
After saving this file as thumb_class.php you can use it as follows:
<?php include("thumb_class.php"); new thumbnail('test.jpg',400,300,'thumb/'); ?>In the above example
"test.php" is the name of image you want to resize,
"400" is the new width of image,
"300" is the new height of image, and
"thumb/" is the destination folder.
For any queries, suggestions or problems that you may have, feel free to comment on this post, I would love to answer you guyz ;).
No comments:
Post a Comment