//创建一个裁剪大小的画布
$thumb = imagecreatetruecolor($width, $height);
//原base64图片(其他的转成base64类型),创建新的图像
$im = imagecreatefrompng($data);
//判断照片位置是否旋转过
$exif = exif_read_data($image);
if (isset($exif['Orientation'])) {
$orientation = $exif['Orientation'];
switch ($orientation) {
case 2:
imageflip($im, IMG_FLIP_HORIZONTAL);
break;
case 3:
$im = imagerotate($im, 180, 0);
break;
case 4:
imageflip($im, IMG_FLIP_VERTICAL);
break;
case 5:
$im = imagerotate($im, -90, 0);
imageflip($im, IMG_FLIP_HORIZONTAL);
break;
case 6:
$im = imagerotate($im, -90, 0);
break;
case 7:
$im = imagerotate($im, 90, 0);
imageflip($im, IMG_FLIP_HORIZONTAL);
break;
case 8:
$im = imagerotate($im, 90, 0);
break;
}
}
//根据像素点(x,y,width,height),复制图像的一部分到画布
imagecopy($thumb, $im, 0, 0, $left_x, $left_y, $width, $height);
ob_start();
//输出图片到缓存区
imagepng($thumb);
//从缓存区获取内容
$contents = ob_get_contents();
//清空并关闭缓存区
ob_end_clean();
//输出裁剪后的base64图片
base64_encode($contents);