php GD库 生成图片缩略图
$img = 'images/2.jpg'; $file_name = createThumb($img, 500); createThumb($img, 500, 'png', 'abc',90,false);
函数
/** * 生成缩略图 * @param $img 原图路径 * @param int $thumb_width 缩略图的宽度,默认200 * @param string $ext 缩略图的扩展名,默认和原图相同 * @param string $prefix 文件名前缀 * @param int $quality jpg质量 * @param bool $file 是否生成文件 * @return mixed */ function createThumb($img, $thumb_width = 200, $ext = '', $prefix = 'thumb_', $quality = 80, $file = true) { //获取原图像的大小 $img_arr = getimagesize($img); $img_width = $img_arr[0]; $img_height = $img_arr[1]; //获取原图像资源 $src = imagecreatefromAll($img); //计算缩略图大小 $thumb_height = $img_height * $thumb_width / $img_width; //创建画布 $thumb = imagecreatetruecolor($thumb_width, $thumb_height); //生成缩略图 imagecopyresized($thumb, $src, 0, 0, 0, 0, $thumb_width, $thumb_height, $img_width, $img_height); $file_name = createImage($img, $thumb, $ext, $prefix, $quality, $file); imagedestroy($thumb); imagedestroy($src); return $file_name; }
/** * 获取图片资源 * @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格式图片的质量 * @param bool $file 是否生成文件 * @return bool|string */ function createImage($src, $im, $ext = '', $prefix = 'thumb_', $quality = 80, $file = true) { $src_path = pathinfo($src); //$ext 为空,和原图扩展名相同 if (empty($ext)) { $ext = $src_path['extension']; } $new_file = $src_path['dirname'] . '/' . $prefix . $src_path['filename'] . '.' . $ext; if ($file) { 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; } } else { switch (strtolower($ext)) { case 'jpg': header('content-type:image/jpeg'); imagejpeg($im, null, $quality); return $new_file; case 'png': header('content-type:image/png'); imagepng($im); return $new_file; case 'gif'; header('content-type:image/gif'); imagegif($im); return $new_file; default: return false; } } }