调整图像大小的PHP

The following script will easily allow you to resize images using PHP and the GD library. If you’re looking to resize uploaded images or easily generate thumbnails give it a try

Update: Looking to resize transparent PNG’s and GIF’s? We’ve updated our original code, take a look at http://www.white-hat-web-design.co.uk/blog/retaining-transparency-with-php-image-resizing/

Usage

Save the code from the ‘the code’ section below as SimpleImage.php and take a look at the following examples of how to use the script.

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



<span style="font-size:14px;"><?php 
include('SimpleImage.php');
 $image = new SimpleImage(); 
 $image->load('picture.jpg'); 
 $image->resize(250,400); 
 $image->save('picture2.jpg'); 
?>
</span>


 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.

<pre name="code" class="php"><span style="font-size:14px;"><?php </span>

include ('SimpleImage.php');$image = new SimpleImage ();$image->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
 
<?php
include('SimpleImage.php'); 
$image = new SimpleImage(); 
$image->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


 
<?php
include ('SimpleImage.php');
$image = new SimpleImage ();
$image->load ( 'picture.jpg' );
$image->resizeToHeight ( 500 );
$image->save ( 'picture2.jpg' );
$image->resizeToHeight ( 200 );
$image->save ( 'picture3.jpg' )
<pre name="code" class="php"> ?>

 
 

 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

header ( 'Content-Type: image/jpeg' );
include ('SimpleImage.php');
$image = new SimpleImage ();
$image->load ( 'picture.jpg' );
$image->resizeToWidth ( 150 );
$image->output ();


 The following example will resize and save an image which has been uploaded via a form
	if (isset ( $_POST ['submit'] )) {
		include ('SimpleImage.php');
		$image = new SimpleImage ();
		$image->load ( $_FILES ['uploaded_image'] ['tmp_name'] );
		$image->resizeToWidth ( 150 );
		$image->output ();
	} else {
		
		?>
		<form action="upload.php" method="post" enctype="multipart/form-data">
			<input type="file" name="uploaded_image" /> <input type="submit"
				name="submit" value="Upload" />
		</form>
		<?php 
		
	}


The code

<?php

/* File: SimpleImage.php
 *  * Author: Simon Jarvis 
 *  * Copyright: 2006 Simon Jarvis 
 *  * Date: 08/11/06 
 *  * 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 );
		}
		
		if (! $this->image) {
			return false;
		}
		
		return $this;
	}
	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) {
		if ($this->getWidth () < $width) {
			$width = $this->getWidth ();
		}
		$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) {
		$new_image = imagecreatetruecolor ( $width, $height );
		imagecopyresampled ( $new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth (), $this->getHeight () );
		$this->image = $new_image;
	}
	function resize2($width, $height) {
		$new_image = imagecreatetruecolor ( $width, $height );
		if ($this->image_type == IMAGETYPE_GIF || $this->image_type == IMAGETYPE_PNG) {
			$current_transparent = imagecolortransparent ( $this->image );
			if ($current_transparent != - 1) {
				$transparent_color = imagecolorsforindex ( $this->image, $current_transparent );
				$current_transparent = imagecolorallocate ( $new_image, $transparent_color ['red'], $transparent_color ['green'], $transparent_color ['blue'] );
				imagefill ( $new_image, 0, 0, $current_transparent );
				imagecolortransparent ( $new_image, $current_transparent );
			} elseif ($this->image_type == IMAGETYPE_PNG) {
				imagealphablending ( $new_image, false );
				$color = imagecolorallocatealpha ( $new_image, 0, 0, 0, 127 );
				imagefill ( $new_image, 0, 0, $color );
				imagesavealpha ( $new_image, true );
			}
		}
		imagecopyresampled ( $new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth (), $this->getHeight () );
		$this->image = $new_image;
	}
}

?>

转自: http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值