好好学习,天天向上,学习网欢迎您!
当前位置:首页 > > 考试 > > 计算机类 > 内容页

php生成缩略图的两种方法

2021-05-20 23:40:34计算机类访问手机版70

  php生成缩略图的两种方法

  在php中如果要生成缩略图有什么办法呢?以下是小编整理的两种方法,希望对大家有用,更多消息请关注应届毕业生网。核心代码如下  public function getImage  // create instance  $basePath = base_path'public/';  $md5 = 'b8c3bf0b10a81c5b6a98c527868a0000';  $sub1 = substr$md5, 0, 1;  $sub2 = substr$md5, 1, 2;  $subPath = sprintf"image/%s/%s/%s%s.jpg", $sub1, $sub2, $md5, '300x300';  $sourcePath = sprintf"image/%s/%s/%s.jpg", $sub1, $sub2, $md5;  //截成100x80的缩略图  //$image = $this->getCropper$basePath.$sourcePath,$basePath.$subPath, 300, 300;  $image = $this->getCrops$basePath.$sourcePath,$basePath.$subPath, 300, 300;    //生成缩略图  function getCropper$source_path,$NewImagePath, $target_width, $target_height    $source_info = getimagesize$source_path;  $source_width = $source_info[0];  $source_height = $source_info[1];  $source_mime = $source_info['mime'];  $source_ratio = $source_height / $source_width;  $target_ratio = $target_height / $target_width;  // 源图过高  if $source_ratio > $target_ratio    $cropped_width = $source_width;  $cropped_height = $source_width * $target_ratio;  $source_x = 0;  $source_y = $source_height - $cropped_height / 2;    // 源图过宽  elseif $source_ratio < $target_ratio    $cropped_width = $source_height / $target_ratio;  $cropped_height = $source_height;  $source_x = $source_width - $cropped_width / 2;  $source_y = 0;    // 源图适中  else    $cropped_width = $source_width;  $cropped_height = $source_height;  $source_x = 0;  $source_y = 0;    switch $source_mime    case 'image/gif':  $source_image = imagecreatefromgif$source_path;  break;  case 'image/jpeg':  $source_image = imagecreatefromjpeg$source_path;  break;  case 'image/png':  $source_image = imagecreatefrompng$source_path;  break;  default:  return false;  break;    $target_image = imagecreatetruecolor$target_width, $target_height;  $cropped_image = imagecreatetruecolor$cropped_width, $cropped_height;  // 图片裁剪  imagecopy$cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height;  // 图片缩放  imagecopyresampled$target_image, $cropped_image, 0, 0, 0, 0, $target_width, $target_height, $cropped_width, $cropped_height;  header'Content-Type: image/jpeg';  imagejpeg$target_image,$NewImagePath,100;  imagedestroy$source_image;  imagedestroy$target_image;  imagedestroy$cropped_image;    //生成缩略图,填充白边  function getCrops$src_path,$NewImagePath,$width,$height  //源图对象  $src_image = imagecreatefromstringfile_get_contents$src_path;  $source_info = getimagesize$src_path;  $source_mime = $source_info['mime'];  $src_width = imagesx$src_image;  $src_height = imagesy$src_image;  switch $source_mime    case 'image/gif':  $src_image = imagecreatefromgif$src_path;  break;  case 'image/jpeg':  $src_image = imagecreatefromjpeg$src_path;  break;  case 'image/png':  $src_image = imagecreatefrompng$src_path;  break;  default:  return false;  break;    //生成等比例的缩略图  //$tmp_image_width = 0;  //$tmp_image_height = 0;  if $src_width / $src_height >= $width / $height   $tmp_image_width = $width;  $tmp_image_height = round$tmp_image_width * $src_height / $src_width;   else   $tmp_image_height = $height;  $tmp_image_width = round$tmp_image_height * $src_width / $src_height;    $tmpImage = imagecreatetruecolor$tmp_image_width, $tmp_image_height;  imagecopyresampled$tmpImage, $src_image, 0, 0, 0, 0, $tmp_image_width, $tmp_image_height, $src_width, $src_height;  //添加白边  $final_image = imagecreatetruecolor$width, $height;  $color = imagecolorallocate$final_image, 255, 255, 255;  imagefill$final_image, 0, 0, $color;  $x = round$width - $tmp_image_width / 2;  $y = round$height - $tmp_image_height / 2;  imagecopy$final_image, $tmpImage, $x, $y, 0, 0, $tmp_image_width, $tmp_image_height;  //输出图片  header'Content-Type: image/jpeg';  imagejpeg$final_image,$NewImagePath,100;  imagedestroy$src_image;  imagedestroy$final_image;