Home > Backend Development > PHP Tutorial > PHP intelligently generates thumbnails from images_PHP tutorial

PHP intelligently generates thumbnails from images_PHP tutorial

WBOY
Release: 2016-07-13 10:46:06
Original
931 people have browsed it

A PHP intelligently generates thumbnails from images, which can automatically generate images of equal proportions according to the size of your images. Friends in need can refer to it.

The code is as follows Copy code
< ?php

/************************************* *Author: Dreaming Scorpio (beluckly)
*Completion time: 2006-12-18
*Class name: CreatMiniature
*Function: Generate various types of thumbnails
*Basic parameters: $srcFile,$echoType
*Parameters used by the method:
$toFile, generated file
$toW, generated width
$toH, the generated high
$bk1, background color parameter with 255 as the highest
$bk2, background color parameter
$bk3, 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="";                                                                                                                                                 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="";                                                                                                                                        
//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 "Your GD library cannot use GIF format images, 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-& gt; IM = ImageCreateFromjpeg ($ this-& gt; srcfile);
break;
case 3:
                    $this->im = ImageCreateFromPNG($this->srcFile);                                                                              break;
         }
          $this->srcW=ImageSX($this->im);
           $this->srcH=ImageSY($this->im); 
}  
       
//Generate distorted thumbnails
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);
           }
                                                                   $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 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;
     }
     
     //Create a link,link---do not create a file--do not create a 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;
           }
}  

}
?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/632961.htmlTechArticleA PHP intelligently generates thumbnails from images, which can automatically generate images of equal proportions according to the size of your images. Friends in need can refer to it. The code is as follows Copy the code ?php /******...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template