Home > Article > Backend Development > Smart PHP thumbnail generation program_PHP tutorial
This is an effect that can automatically detect the size of your picture and generate a thumbnail effect of equal proportions. Friends in need can refer to it.
The code is as follows | Copy code |
*Author: Dreaming Scorpio (beluckly) * Example:
< ?php
/*************************************** * Author: Dreaming Scorpio ( beluckly) *Completion time: 2006-12-18 *Class name: CreatMiniature *Function: Generate multiple types of thumbnails *Basic parameters: $srcFile, $echoType * Parameters used in the method: $toFile, generated file $toW, generated width $toH, the generated height $bk1, the background color parameter is 255 as the highest $bk2, the background color parameter $bk3, the background color parameter
*Example:
include("thumb.php"); $cm=new CreatMiniature(); $cm->SetVar("1.jpg","file"); $cm->Distortion("dis_bei.jpg",150,200); $cm->Prorate("pro_bei.jpg",150,200); $cm->Cut("cut_bei.jpg",150,200); $cm->BackFill ("fill_bei.jpg",150,200);
****************************** *********** /
class CreatMiniature { //Public variables var $srcFile=""; //Original image var $echoType; //Output image type, link--not saved as a file; file--saved as a file var $im=""; //Temporary variable var $srcW=""; //Original image width var $srcH=""; //Original image height
//Set variables and initialize function SetVar($srcFile,$echoType) { $this->srcFile=$srcFile; $this->echoType =$echoType;
$info = ""; $data = GetImageSize($this->srcFile,$info); switch ($data[2]) { case 1: if(!function_exists("imagecreatefromgif")){ echo "you The GD library cannot use images in GIF format, please use Jpeg or PNG format! Return"; exit( ); } $this->im = ImageCreateFromGIF($this->srcFile); break; case 2: if(!function_exists("imagecreatefromjpeg")){ echo "Your GD library cannot use images in jpeg format, please use images in other formats!" return"; exit(); } $this ->im = ImageCreateFromJpeg($this->srcFile); break; case 3: $this->im = ImageCreateFromPNG($this- >srcFile); break; } $this->srcW=ImageSX($this->im); $ this->srcH=ImageSY($this->im); }
//Generate a distorted thumbnail function Distortion ($toFile,$toW,$toH) { $cImg=$this->CreatImage($this->im,$toW,$toH,0,0, 0,0,$this->srcW,$this->srcH); return $this->EchoImage($cImg,$toFile); ImageDestroy($cImg ); }
//Generate scaled thumbnails function Prorate($toFile,$toW,$toH) { $toWH=$toW/$toH; $srcWH=$this->srcW/$this->srcH; if ($toWH< =$srcWH) { $ftoW=$toW; $ftoH=$ftoW*($this->srcH/$this- >srcW); } else { $ftoH=$toH; $ftoW=$ftoH* ($this->srcW/$this->srcH); } if($this->srcW>$toW||$this->srcH>$ toH) { $cImg=$this->CreatImage($this->im,$ftoW,$ftoH,0,0,0,0,$this-> ;srcW,$this->srcH); return $this->EchoImage($cImg,$toFile); ImageDestroy($cImg); } else { $cImg=$this->CreatImage($this->im,$this->srcW,$this-> srcH,0,0,0,0,$this->srcW,$this->srcH); return $this->EchoImage($cImg,$toFile); ImageDestroy($cImg); } }
//Generate a minimally cropped thumbnail function Cut($toFile,$toW,$toH) { $toWH=$toW/$toH; $srcWH=$this->srcW/$ this->srcH; if($toWH< =$srcWH) { $ctoH=$toH; $ctoW=$ctoH*($this->srcW/$this->srcH); } else { $ctoW=$toW; $ctoH=$ctoW*($this->srcH/$this->srcW); } $allImg=$this->CreatImage($this->im,$ctoW,$ctoH,0,0,0,0,$this->srcW,$this->srcH); $cImg=$this->CreatImage($allImg,$toW,$toH,0,0,($ctoW-$toW)/2,($ctoH-$toH)/2,$toW,$toH); return $this->EchoImage($cImg,$toFile); ImageDestroy($cImg); ImageDestroy($allImg); }
//生成背景填充的缩图 function BackFill($toFile,$toW,$toH,$bk1=255,$bk2=255,$bk3=255) { $toWH=$toW/$toH; $srcWH=$this->srcW/$this->srcH; if($toWH< =$srcWH) { $ftoW=$toW; $ftoH=$ftoW*($this->srcH/$this->srcW); } else { $ftoH=$toH; $ftoW=$ftoH*($this->srcW/$this->srcH); } if(function_exists("imagecreatetruecolor")) { @$cImg=ImageCreateTrueColor($toW,$toH); if(!$cImg) { $cImg=ImageCreate($toW,$toH); } } else { $cImg=ImageCreate($toW,$toH); } $backcolor = imagecolorallocate($cImg, $bk1, $bk2, $bk3); //填充的背景颜色 ImageFilledRectangle($cImg,0,0,$toW,$toH,$backcolor); if($this->srcW>$toW||$this->srcH>$toH) { $proImg=$this->CreatImage($this->im,$ftoW,$ftoH,0,0,0,0,$this->srcW,$this->srcH); /* if($ftoW< $toW) { ImageCopyMerge($cImg,$proImg,($toW-$ftoW)/2,0,0,0,$ftoW,$ftoH,100); } else if($ftoH<$toH) { ImageCopyMerge($cImg,$proImg,0,($toH-$ftoH)/2,0,0,$ftoW,$ftoH,100); } */ if($ftoW<$toW) { ImageCopy($cImg,$proImg,($toW-$ftoW)/2,0,0,0,$ftoW,$ftoH); } else if($ftoH<$toH) { ImageCopy($cImg,$proImg,0,($toH-$ftoH)/2,0,0,$ftoW,$ftoH); } else { ImageCopy($cImg,$proImg,0,0,0,0,$ftoW,$ftoH); } } else { ImageCopyMerge($cImg,$this->im,($toW-$ftoW)/2,($toH-$ftoH)/2,0,0,$ftoW,$ftoH,100); } return $this->EchoImage($cImg,$toFile); ImageDestroy($cImg); }
function CreatImage($img,$creatW,$creatH,$dstX,$dstY,$srcX,$srcY,$srcImgW,$srcImgH) { if(function_exists("imagecreatetruecolor")) { @$creatImg = ImageCreateTrueColor($creatW,$creatH); if($creatImg) ImageCopyResampled($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH); else { $creatImg=ImageCreate($creatW,$creatH); ImageCopyResized($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH); } } else { $creatImg=ImageCreate($creatW,$creatH); ImageCopyResized($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH); } return $creatImg; }
//输出图片,link---只输出,不保存文件。file--保存为文件 function EchoImage($img,$to_File) { switch($this->echoType) { case "link": if(function_exists('imagejpeg')) return ImageJpeg($img); else return ImagePNG($img); break; case "file": if(function_exists('imagejpeg')) return ImageJpeg($img,$to_File); else return ImagePNG($img,$to_File); break; } }
} ?> |