PHP裁剪和缩放图片函数

作者:王炜
日期:2014年03月11日

根据自定义的目标图高宽, 按目标图高宽比裁剪、缩放源图.
传入参数:
$source_path string 源图路径
$target_width integer 目标图宽度
$target_height integer 目标图高度

源图支持MIMETYPE: image/gif, image/jpeg, image/png.

function imagecropper($source_path, $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);
 imagedestroy($source_image);
  imagedestroy($target_image);
  imagedestroy($cropped_image);
}

欢迎转载,转载请保留链接: https://www.phpzu.com/article/2014/03/11/250.html

PHP裁剪和缩放图片函数:等您坐沙发呢!

发表评论

*

code

0