php 生成缩略图$img='images/2.jpg';
createThumb($img,500);
/**
*生成缩略图
*@param$img原图路径
*@paramint$thumb_width缩略图的宽度,默认200
*@paramstring$ext缩略图的扩展名,默认和原图相同
*@returnbool|string
*/
functioncreateThumb($img,$thumb_width=200,$ext='')
{
//1.获取原图像的大小
$img_arr=getimagesize($img);
$img_width=$img_arr[0];
$img_height=$img_arr[1];
//获取原图像资源
$src=imagecreatefromAll($img);
//2.计算缩略图大小
//方式二:
//$thumb_width=200;
$thumb_height=$img_height*$thumb_width/$img_width;
//3.创建画布
//$thumb=imagecreate($thumb_width,$thumb_height);
$thumb=imagecreatetruecolor($thumb_width,$thumb_height);
//4.生成缩略图
imagecopyresized($thumb,$src,0,0,0,0,$thumb_width,$thumb_height,$img_width,$img_height);
//5.生成文件
$thumb_file=createImageAll($img,$thumb,$ext);
//只在浏览器中显示,不生成文件
//header('content-type:image/jpeg');
//imagepng($thumb);
imagedestroy($thumb);
imagedestroy($src);
return$thumb_file;
}
/**
*获取图片资源
*@param$src图片路径
*@returnbool|resource
*/
functionimageCreateFromAll($src)
{
$src_arr=getimagesize($src);
switch($src_arr['mime']){
case'image/jpeg':
returnimagecreatefromjpeg($src);
case'image/png':
returnimagecreatefrompng($src);
case'image/gif':
returnimagecreatefromgif($src);
case'image/bmp':
returnimagecreatefrombmp($src);
//case'image/wbmp':
//returnimagecreatefromwbmp($src);
//case'image/webp':
//returnimagecreatefromwebp($src);
//case'image/x-xbitmap':
//returnimagecreatefromxbm($src);
//case'image/x-xpixmap':
//returnimagecreatefromxpm($src);
default:
returnfalse;
}
}
/**
*生成图片
*@param$src原图的路径
*@param$im目标图的资源
*@paramstring$ext生成图片的扩展名,默认是原图扩展名
*@paramstring$prefix文件名前缀
*@paramint$quality生成jpg格式图片的质量
*@returnbool|string
*/
functioncreateImageAll($src,$im,$ext='',$prefix='thumb_',$quality=80)
{
$src_path=pathinfo($src);
//$ext为空,和原图扩展名相同
if(empty($ext)){
$ext=$src_path['extension'];
}
$new_file=$src_path['dirname'].'/'.$prefix.$src_path['filename'].'.'.$ext;
switch(strtolower($ext)){
case'jpg':
imagejpeg($im,$new_file,$quality);
return$new_file;
case'png':
imagepng($im,$new_file);
return$new_file;
case'gif';
imagegif($im,$new_file);
return$new_file;
default:
returnfalse;
}
}