-
<?php
-
/**
-
* 图像裁剪
-
* @param $title string 原图路径
-
* @param $content string 需要裁剪的宽
-
* @param $encode string 需要裁剪的高
-
*/
-
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);
-
-
//保存图片到本地(两者选一)
-
//$randNumber = mt_rand(00000, 99999). mt_rand(000, 999);
-
//$fileName = substr(md5($randNumber), 8, 16) .".png";
-
//imagepng($target_image,'./'.$fileName);
-
//imagedestroy($target_image);
-
-
//直接在浏览器输出图片(两者选一)
-
header('Content-Type: image/jpeg');
-
imagepng($target_image);
-
imagedestroy($target_image);
-
imagejpeg($target_image);
-
imagedestroy($source_image);
-
imagedestroy($target_image);
-
imagedestroy($cropped_image);
-
}
-
-
//调用
-
//imagecropper('./img033.jpg',300,300);
-
imagecropper('./img033.jpg',140,140);
-
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29679106/viewspace-2144576/
,如需转载,请注明出处,否则将追究法律责任。