gd库是php教程中一个处理图像的专用库,他可以方便快捷的处理大多数据处理,它提供了大量的图片处理函数,下面我们就利用gd库的函数来生成缩略图.
测试代码如下:
- <?php
- include('resizeimage.php');
- if(!emptyempty($_post)){
- echo($filename.".jpg?cache=".rand(0,999999));
- }
- ?>
- <form name="test" action="?submit=true" enctype="multipart/form-data" method="post" >
- <input type="file" name="image" size="50" value="浏览"><p>
- <input type="submit" value="上传图片">
- </form>
resizeimage.php 文件代码如下:
- <?php
- $filename="image.thumb";
-
- $resizewidth=400;
-
- $resizeheight=400;
-
- function resizeimage($im,$maxwidth,$maxheight,$name){
- $width = imagesx($im);
- $height = imagesy($im);
- if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)){
- if($maxwidth && $width > $maxwidth){
- $widthratio = $maxwidth/$width;
- $resizewidth=true;
- }
- if($maxheight && $height > $maxheight){
- $heightratio = $maxheight/$height;
- $resizeheight=true;
- }
- if($resizewidth && $resizeheight){
- if($widthratio < $heightratio){
- $ratio = $widthratio;
- }else{
- $ratio = $heightratio;
- }
- }elseif($resizewidth){
- $ratio = $widthratio;
- }elseif($resizeheight){
- $ratio = $heightratio;
- }
- $newwidth = $width * $ratio;
- $newheight = $height * $ratio;
- if(function_exists("imagecopyresampled")){
- $newim = imagecreatetruecolor($newwidth, $newheight);
- imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
- }else{
- $newim = imagecreate($newwidth, $newheight);
- imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
- }
- imagejpeg ($newim,$name . ".jpg");
- imagedestroy ($newim);
- }else{
- imagejpeg ($im,$name . ".jpg");
- }
- }
-
- if($_files['image']['size']){
- if($_files['image']['type'] == "image/pjpeg"){
- $im = imagecreatefromjpeg($_files['image']['tmp_name']);
- }elseif($_files['image']['type'] == "image/x-png"){
- $im = imagecreatefrompng($_files['image']['tmp_name']);
- }elseif($_files['image']['type'] == "image/gif"){
- $im = imagecreatefromgif($_files['image']['tmp_name']);
- }
- if($im){
- if(file_exists("$filename.jpg")){
- unlink("$filename.jpg");
- }
- resizeimage($im,$resizewidth,$resizeheight,$filename);
- imagedestroy ($im);
- }
- }
- ?>
|