base64图片剪裁
protected function catImage($base64data,$x=800,$y=1200,$width=2900,$height=3300){
$old_image = base64_decode($base64data);
$old_image=imagecreatefromstring($old_image);
//裁剪开区域左上角的点的坐标
$x = $x;
$y = $y;
//裁剪区域的宽和高
$width = $width-$x;
$height = $height-$y;
//最终保存成图片的宽和高,和源要等比例,否则会变形
$final_width = $width;
$final_height = $height;
//将裁剪区域复制到新图片上,并根据源和目标的宽高进行缩放或者拉升
$new_image = imagecreatetruecolor($final_width, $final_height);
imagecopyresampled($new_image, $old_image, 0, 0, $x, $y, $final_width, $final_height, $width, $height);
ob_start(); // Let's start output buffering.
imagejpeg($new_image); //This will normally output the image, but because of ob_start(), it won't.
$contents = ob_get_contents(); //Instead, output above is saved to $contents
ob_end_clean(); //End the output buffer.
//输出base64
return $contents;
}
base64去掉头部、解码、存储&创建图片
去除头部:substr(strstr($base64,','),1);
解码:base64_decode($base64);
存储&创建图片:file_put_contents($file_path,$data);或 imagecreatefromstring($data)
base64 生成的图像添加背景图像
图片处理参数解释:http://www.5idev.com/p-php_gd.shtml
$img = imagecreatefromstring(base64_decode(str_replace('data:image/png;base64,', '', $image)));
$filename = 'image.jpg';
$width = imagesx($img);
$height = imagesy($img);
$output = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($output, 255, 255, 255);//白色背景
imagefilledrectangle($output, 0, 0, $width, $height, $white);
imagecopy($output, $img, 0, 0, 0, 0, $width, $height);
imagejpeg($output, './'.$filename);
echo $filename;