php切割图片
直接先看效果
原图
结果
原图是一个灰常大的图片(我的屏幕放不下的那种),但是我需要的只有左下角的四分之一的图片 其他都是空白 所以需要裁剪
/**
* 裁剪图片
* @param $img 原图路径 'uploads/ty/20200408/11111.png';
* @param $is_show 是否直接展示 '1'
* @param $save_path 结果图保存路径 'uploads/ty/20200408';
*/
public function doImg($img, $is_show=0, $save_path)
{
if ( !file_exists($img) ) die('图片不存在');
//创建源图的实例
$src = imagecreatefromstring(file_get_contents($img));
// 获取原图尺寸
$info = getimagesize($img);
// 裁剪开区域的点的坐标 (这里我从最左侧 高二分之一点位开始)
$x = 1;
$y = $info[1]/2;
// 裁剪区域的宽和高 (这里我保留原图宽高原二分之一尺寸)
$width = $info[0]/2;
$height = $info[1]/2;
// 最终保存成图片的宽和高,和源要等比例,否则会变形
$res_width = $info[0]/2;
$res_height = round($res_width * $height / $width);
// 将裁剪区域复制到新图片上
$res_image = imagecreatetruecolor($res_width, $res_height);
imagecopyresampled($res_image, $src, 0, 0, $x, $y, $res_width, $res_height, $width, $height);
if ( $is_show == 1 ){
// 浏览器 输出图片
header('Content-Type: image/jpeg');
imagejpeg($res_image);
imagedestroy($src);
imagedestroy($res_image);
}else{
// 保存图片
$ext = pathinfo($img, PATHINFO_EXTENSION);
$name = time().rand(1000, 9999);
$path = $save_path . '/' . $name . '.' . $ext;
imagejpeg($res_image, $path);
imagedestroy($src);
imagedestroy($res_image);
die( '新图片:'. $path );
}
}