Home  >  Article  >  Backend Development  >  Smart PHP thumbnail generation program_PHP tutorial

Smart PHP thumbnail generation program_PHP tutorial

WBOY
WBOYOriginal
2016-07-20 11:10:31763browse

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)
*Completion time: 2006-12-18
*Class name: CreatMiniature
*Function: Generate multiple types of thumbnails
*Basic parameters: $srcFile, $echoType
*Parameters used in the method:
$toFile, the generated file
$toW, the generated width
$toH, the generated height
$bk1, the background color parameter is 255 as the highest
$bk2, the background color parameter
$bk3, background color parameter

* 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;

}

}

 

}

?>


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/444719.htmlTechArticle这是一个可以自动检测你图片大小并生成等比例的缩略图效果,有需要的朋友可以参考一下下哦。 代码如下 复制代码 *作者:落梦天蝎(...
Statement:
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