php实现按指定大小等比缩放生成上传图片缩略图的方法
本文实例讲述了php实现按指定大小等比缩放生成上传图片缩略图的方法。分享给大家供大家参考。具体实现方法如下:
/**
**
*等比缩放
*@paramunknown_type$srcImage 源图片路径
*@paramunknown_type$toFile 目标图片路径
*@paramunknown_type$maxWidth 最大宽
*@paramunknown_type$maxHeight 最大高
*@paramunknown_type$imgQuality图片质量
*@returnunknown
*/
functionresize($srcImage,$toFile,$maxWidth=100,$maxHeight=100,$imgQuality=100)
{
list($width,$height,$type,$attr)=getimagesize($srcImage);
if($width<$maxWidth ||$height<$maxHeight)return;
switch($type){
case1:$img=imagecreatefromgif($srcImage);break;
case2:$img=imagecreatefromjpeg($srcImage);break;
case3:$img=imagecreatefrompng($srcImage);break;
}
$scale=min($maxWidth/$width,$maxHeight/$height);//求出绽放比例
if($scale<1){
$newWidth=floor($scale*$width);
$newHeight=floor($scale*$height);
$newImg=imagecreatetruecolor($newWidth,$newHeight);
imagecopyresampled($newImg,$img,0,0,0,0,$newWidth,$newHeight,$width,$height);
$newName="";
$toFile=preg_replace("/(.gif|.jpg|.jpeg|.png)/i","",$toFile);
switch($type){
case1:if(imagegif($newImg,"$toFile$newName.gif",$imgQuality))
return"$newName.gif";break;
case2:if(imagejpeg($newImg,"$toFile$newName.jpg",$imgQuality))
return"$newName.jpg";break;
case3:if(imagepng($newImg,"$toFile$newName.png",$imgQuality))
return"$newName.png";break;
default:if(imagejpeg($newImg,"$toFile$newName.jpg",$imgQuality))
return"$newName.jpg";break;
}
imagedestroy($newImg);
}
imagedestroy($img);
returnfalse;
}
希望本文所述对大家的PHP程序设计有所帮助。