php 生成缩略图$img = 'images/2.jpg';
createThumb($img, 500);
/**
* 生成缩略图
* @param $img 原图路径
* @param int $thumb_width 缩略图的宽度,默认200
* @param string $ext 缩略图的扩展名,默认和原图相同
* @return bool|string
*/
function createThumb($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 图片路径
* @return bool|resource
*/
function imageCreateFromAll($src)
{
$src_arr = getimagesize($src);
switch ($src_arr['mime']) {
case 'image/jpeg':
return imagecreatefromjpeg($src);
case 'image/png':
return imagecreatefrompng($src);
case 'image/gif':
return imagecreatefromgif($src);
case 'image/bmp':
return imagecreatefrombmp($src);
// case 'image/wbmp':
// return imagecreatefromwbmp($src);
// case 'image/webp':
// return imagecreatefromwebp($src);
// case 'image/x-xbitmap':
// return imagecreatefromxbm($src);
// case 'image/x-xpixmap':
// return imagecreatefromxpm($src);
default :
return false;
}
}
/**
* 生成图片
* @param $src 原图的路径
* @param $im 目标图的资源
* @param string $ext 生成图片的扩展名,默认是原图扩展名
* @param string $prefix 文件名前缀
* @param int $quality 生成jpg格式图片的质量
* @return bool|string
*/
function createImageAll($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:
return false;
}
}