加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php等比例缩放图片及剪切图片代码分享

发布时间:2020-12-13 03:07:50 所属栏目:PHP教程 来源:网络整理
导读:《PHP实例:php等比例缩放图片及剪切图片代码分享》要点: 本文介绍了PHP实例:php等比例缩放图片及剪切图片代码分享,希望对您有用。如果有疑问,可以联系我们。 PHP教程 php等比例缩放图片及剪切图片代码分享 PHP教程 /** * 图片缩放函数(可设置高度固定,

《PHP实例:php等比例缩放图片及剪切图片代码分享》要点:
本文介绍了PHP实例:php等比例缩放图片及剪切图片代码分享,希望对您有用。如果有疑问,可以联系我们。

PHP教程php等比例缩放图片及剪切图片代码分享

PHP教程
/**
 * 图片缩放函数(可设置高度固定,宽度固定或者最年夜宽高,支持gif/jpg/png三种类型)
 * Author : Specs
 *
 * @param string $source_path 源图片
 * @param int $target_width 目标宽度
 * @param int $target_height 目标高度
 * @param string $fixed_orig 锁定宽高(可选参数 width、height或者空值)
 * @return string
 */
function myImageResize($source_path,$target_width = 200,$target_height = 200,$fixed_orig = ''){
  $source_info = getimagesize($source_path);
  $source_width = $source_info[0];
  $source_height = $source_info[1];
  $source_mime = $source_info['mime'];
  $ratio_orig = $source_width / $source_height;
  if ($fixed_orig == 'width'){
    //宽度固定
    $target_height = $target_width / $ratio_orig;
  }elseif ($fixed_orig == 'height'){
    //高度固定
    $target_width = $target_height * $ratio_orig;
  }else{
    //最年夜宽或最年夜高
    if ($target_width / $target_height > $ratio_orig){
      $target_width = $target_height * $ratio_orig;
    }else{
      $target_height = $target_width / $ratio_orig;
    }
  }
  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);
  imagecopyresampled($target_image,$source_image,$target_width,$target_height,$source_width,$source_height);
  //header('Content-type: image/jpeg');
  $imgArr = explode('.',$source_path);
  $target_path = $imgArr[0] . '_new.' . $imgArr[1];
  imagejpeg($target_image,$target_path,100);
}

PHP教程用法:

  1. myImageResize($filename,200,200); //最年夜宽高
  2. myImageResize($filename,'width'); //宽度固定
  3. myImageResize($filename,'height'); //高度固定

PHP教程剪切图片为固定年夜小:

PHP教程
function imagecropper($source_path,$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_x,$source_y,$cropped_width,$cropped_height);
  // 缩放
  imagecopyresampled($target_image,$cropped_image,$cropped_height);
  $dotpos = strrpos($source_path,'.');
  $imgName = substr($source_path,$dotpos);
  $suffix = substr($source_path,$dotpos);
  $imgNew = $imgName . '_small' . $suffix;
  imagejpeg($target_image,$imgNew,100);
  imagedestroy($source_image);
  imagedestroy($target_image);
  imagedestroy($cropped_image);
}

欢迎参与《PHP实例:php等比例缩放图片及剪切图片代码分享》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读