/**
* @param $filename 要缩略的图片 - 相对地址或带域名的地址(限本服务器)
* @param $dw 画布的宽(也就是你要缩略的宽)
* @param $dh 画布的高(也就是你要缩略的高)
* @param $newfile 保存路径
*/
function cutThumb($filename, $dw=300, $dh=300, $newfile='')
{
$parse_url = parse_url($filename);
$filename_abs = ROOTPATH.$parse_url['path'];//获取文件的绝对地址
$pathinfo = pathinfo($parse_url['path']);
if (empty($newfile)){
$newfile = preg_replace('/[\/]+/i','/','/thumb'.$pathinfo['dirname']);
if (!is_dir(ROOTPATH.$newfile)){
@mkdir (ROOTPATH.$newfile,0777,true);
}
$newfile .= '/'.$pathinfo['filename'].'_'.$dw.'x'.$dh.'.'.$pathinfo['extension'];
}
$newfile_abs = ROOTPATH.$newfile;//缩略图的绝对地址
$newfile = (!empty($parse_url['host'])?'//'.$parse_url['host']:'').$newfile;//缩略图的相对地址
if (file_exists($newfile_abs)){
return $newfile;
}
//获取用户名图
//获取原图的宽高
$infoSrc = getimagesize($filename_abs);//这个getimagesize()是php里面的系统函数用来获取图片的具体信息的
switch ($infoSrc['mime']) {
case 'image/jpeg'://如果类型是imag/jpeg就创建jpeg类型的画布
$srcImg = @imagecreatefromjpeg($filename_abs);
break;
case 'image/gif':
$srcImg = @imagecreatefromgif($filename_abs);//如果类型是gif就创建gif类型的画布
case 'image/png':
$srcImg = @imagecreatefrompng($filename_abs);//如果类型是png就创建png类型的画布
break;
}
$sw = $infoSrc[0];//获取要缩略图片的宽
$sh = $infoSrc[1];//获取要缩略的图片的高
//创建缩略图画布
$destImg = @imagecreatetruecolor($dw, $dh);
//为缩略图填充背景色
$bg = @imagecolorallocate($destImg, 250, 250, 250);
@imagefill($destImg, 0, 0, $bg);
//计算缩放比例
$scale = max($dw/$sw, $dh/$sh);
//设置缩略图的坐标及宽度和高度
$sw = $dw/$scale;
$sh = $dh/$scale;
//居中放置
$dx = ($infoSrc[0] - $sw)/2;
$dy = ($infoSrc[1] - $sh)/2;
//创建缩略图
@imagecopyresampled($destImg, $srcImg, 0, 0, $dx, $dy, $dw, $dh, $sw, $sh);
//把缩略图存放到上一步设置的保存路径里
return @imagejpeg($destImg, $newfile_abs) ? $newfile : $filename;
}