/**
* $file 要缩略的图片
* $dw 画布的宽(也就是你要缩略的宽)
* $dh 画布的高(也就是你要缩略的高)
*/
public function thumb($file,$dw,$dh){
//缩略图保存路径 应用根目录
$path = app()->getRootPath() . 'public/thumb/';
//获取用户名图
$srcImg = $this->getImg($file);//调用下面那个函数,实现根据图片类型来创建不同的图片画布
//获取原图的宽高
$infoSrc = getimagesize($file);//这个getimagesize()是php里面的系统函数用来获取图片的具体信息的
$sw = $infoSrc[0];//获取要缩略图片的宽
$sh = $infoSrc[1];//获取要缩略的图片的高
//创建缩略图画布
$destImg = imagecreatetruecolor($dw, $dh);
//为缩略图填充背景色
$bg = imagecolorallocate($destImg,250,250,250);
imagefill($destImg,0,0,$bg);
//计算例缩放的尺寸
if($dh/$dw > $sh/$sw){
$fw = $dw;
$fh = $sh/$sw*$fw;
}else{
$fh = $dh;
$fw = $fh*$sw/$sh;
}
//创建缩略图
imagecopyresampled($destImg, $srcImg, 0, 0, 0, 0 ,$fw, $fh,$sw, $sh);
$baseName = 'thumb_'.basename($file);//给缩略的图片命名,basename()是系统内置函数用来获取后缀名的
$savePath = $path.'/'.$baseName;//设置缩略图片保存路径
imagejpeg($destImg,$savePath);//把缩略图存放到上一步设置的保存路径里
}
public function getImg($file){//这是以一个动态创建图片画布的函数(根据具体的图片类型创相应类型的画布)
$info = getimagesize($file);
$fn = $info['mime'];//获得图片类型;
switch($fn){
case 'image/jpeg': //如果类型是imag/jpeg就创建jpeg类型的画布
$img = imagecreatefromjpeg($file);
break;
case 'image/gif': //如果类型是gif就创建gif类型的画布
$img = imagecreatefromgif($file);
break;
case 'image/png': //如果类型是png就创建png类型的画布
$img = imagecreatefrompng($file);
break;
}
//返回画布类型
return $img;
}
PHP生成图片缩略图
于 2023-07-24 13:34:26 首次发布