Created
February 2, 2011 12:59
-
-
Save vyatri/807637 to your computer and use it in GitHub Desktop.
Simple image resizer class
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
* File: SimpleImage.php | |
* Author: Simon Jarvis | |
* Modified by: Juanita Vyatri (@vyatri) | |
* Copyright: 2006 Simon Jarvis | |
* Date: 08/11/06 | |
* Last modified: 08/11/10 | |
* Link: http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php | |
* | |
* This program is free software; you can redistribute it and/or | |
* modify it under the terms of the GNU General Public License | |
* as published by the Free Software Foundation; either version 2 | |
* of the License, or (at your option) any later version. | |
* | |
* This program is distributed in the hope that it will be useful, | |
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
* GNU General Public License for more details: | |
* http://www.gnu.org/licenses/gpl.html | |
* | |
*/ | |
class SimpleImage { | |
var $image; | |
var $image_type; | |
function load($filename) { | |
$image_info = getimagesize($filename); | |
$this->image_type = $image_info[2]; | |
if( $this->image_type == IMAGETYPE_JPEG ) { | |
$this->image = imagecreatefromjpeg($filename); | |
} elseif( $this->image_type == IMAGETYPE_GIF ) { | |
$this->image = imagecreatefromgif($filename); | |
} elseif( $this->image_type == IMAGETYPE_PNG ) { | |
$this->image = imagecreatefrompng($filename); | |
} | |
} | |
function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) { | |
if( $image_type == IMAGETYPE_JPEG ) { | |
imagejpeg($this->image,$filename,$compression); | |
} elseif( $image_type == IMAGETYPE_GIF ) { | |
imagegif($this->image,$filename); | |
} elseif( $image_type == IMAGETYPE_PNG ) { | |
imagepng($this->image,$filename); | |
} | |
if( $permissions != null) { | |
chmod($filename,$permissions); | |
} | |
} | |
function output($image_type=IMAGETYPE_JPEG) { | |
if( $image_type == IMAGETYPE_JPEG ) { | |
imagejpeg($this->image); | |
} elseif( $image_type == IMAGETYPE_GIF ) { | |
imagegif($this->image); | |
} elseif( $image_type == IMAGETYPE_PNG ) { | |
imagepng($this->image); | |
} | |
} | |
function getWidth() { | |
return imagesx($this->image); | |
} | |
function getHeight() { | |
return imagesy($this->image); | |
} | |
function resizeToHeight($height) { | |
$ratio = $height / $this->getHeight(); | |
$width = $this->getWidth() * $ratio; | |
$this->resize($width,$height); | |
} | |
function resizeToWidth($width) { | |
$ratio = $width / $this->getWidth(); | |
$height = $this->getheight() * $ratio; | |
$this->resize($width,$height); | |
} | |
function scale($scale) { | |
$width = $this->getWidth() * $scale/100; | |
$height = $this->getheight() * $scale/100; | |
$this->resize($width,$height); | |
} | |
function resize($width,$height,$forcesize='n') { | |
/* optional. if file is smaller, do not resize. */ | |
if ($forcesize == 'n') { | |
if ($width > $this->getWidth() && $height > $this->getHeight()){ | |
$width = $this->getWidth(); | |
$height = $this->getHeight(); | |
} | |
} | |
$new_image = imagecreatetruecolor($width, $height); | |
//imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight()); | |
/* Check if this image is PNG or GIF, then set if Transparent*/ | |
if(($this->image_type == IMAGETYPE_GIF) OR ($this->image_type==IMAGETYPE_PNG)){ | |
imagealphablending($new_image, false); | |
imagesavealpha($new_image,true); | |
$transparent = imagecolorallocatealpha($new_image, 255, 255, 255, 127); | |
imagefilledrectangle($new_image, 0, 0, $width, $height, $transparent); | |
} | |
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight()); | |
$this->image = $new_image; | |
} | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The first example below will load a file named picture.jpg resize it to 250 pixels wide and 400 pixels high and resave it as picture2.jpg
load('picture.jpg'); $image->resize(250,400); $image->save('picture2.jpg'); ?>Example to resize and change quality to 80%, and format from png to jpg
load('picture.png'); $image->resize(250,400); $image->save('picture2.jpg','IMAGETYPE_JPEG',80); // quality change only allowed for JPEG saving ?>If you want to resize to a specifed width but keep the dimensions ratio the same then the script can work out the required height for you, just use the resizeToWidth function.
load('picture.jpg'); $image->resizeToWidth(250); $image->save('picture2.jpg'); ?>You may wish to scale an image to a specified percentage like the following which will resize the image to 50% of its original width and height
load('picture.jpg'); $image->scale(50); $image->save('picture2.jpg'); ?>You can of course do more than one thing at once. The following example will create two new images with heights of 200 pixels and 500 pixels
load('picture.jpg'); $image->resizeToHeight(500); $image->save('picture2.jpg'); $image->resizeToHeight(200); $image->save('picture3.jpg'); ?>The output function lets you output the image straight to the browser without having to save the file. Its useful for on the fly thumbnail generation
load('picture.jpg'); $image->resizeToWidth(150); $image->output(); ?>The following example will resize and save an image which has been uploaded via a form
load($_FILES['uploaded_image']['tmp_name']); $image->resizeToWidth(150); $image->output(); } else { ?>