note 85929 added to function.imagecopyresampled

From: Date: Thu, 25 Sep 2008 02:46:43 +0000
Subject: note 85929 added to function.imagecopyresampled
Groups: php.notes 
Request: Send a blank email to php-notes+get-144690@lists.php.net to get a copy of this message
I've created a PHP5 image resize class, using ImageCopyResampled, that someone might find useful, with support for JPEG, PNG, and GIF formats. It retains the original image's aspect ratio when resizing, and doesn't resize or resample if the original width and height is smaller then the desired resize. <?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($size = 100) { // Resize if($this->x_input > $size && $this->y_input > $size) { // Wide if($this->x_input >= $this->y_input) { $this->x_output = $size; $this->y_output = ($this->x_output / $this->x_input) * $this->y_input; } // Tall else { $this->y_output = $size; $this->x_output = ($this->y_output / $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); } } ##### DEMO ##### // Image $src = "myimage.jpg"; // Begin $img = new imaging; $img->set_img($src); $img->set_quality(80); // Small thumbnail $img->set_size(200); $img->save_img("small_" . $src); // Baby thumbnail $img->set_size(50); $img->save_img("baby_" . $src); // Finalize $img->clear_cache(); ?> ---- Server IP: 64.71.164.2 Probable Submitter: 96.14.5.100 ---- Manual Page -- http://www.php.net/manual/en/function.imagecopyresampled.php Edit -- https://master.php.net/note/edit/85929 Del: integrated -- https://master.php.net/note/delete/85929/integrated Del: useless -- https://master.php.net/note/delete/85929/useless Del: bad code -- https://master.php.net/note/delete/85929/bad+code Del: spam -- https://master.php.net/note/delete/85929/spam Del: non-english -- https://master.php.net/note/delete/85929/non-english Del: in docs -- https://master.php.net/note/delete/85929/in+docs Del: other reasons-- https://master.php.net/note/delete/85929 Reject -- https://master.php.net/note/reject/85929 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#144690) next »