第一种
$res= file_put_contents(‘路径加图片名称’, base64_decode(‘图片流数据’));
if($res===false) throw new \Exception('生成图片失败');
生成成功会返回数字,失败为空
第二种
$stream
=
file_get_contents
(
'php://input'
);
$gd
= imagecreatefromstring(
$stream
);
imagepng(
$gd
,
'/xxx.png'
);
$xmlstr = file_get_contents('php://input')?file_get_contents('php://input') : gzuncompress($GLOBALS['HTTP_RAW_POST_DATA']);//得到post过来的二进制原始数据
$filename=time().'.png';
if(file_put_contents($filename,$xmlstr)){
echo 'success';
}else{
echo 'failed';
}
第三种
// $base_img是获取到前端传递的src里面的值,也就是我们的数据流文件
$base_img = str_replace('data:image/jpg;base64,', '', $base_img);
// 设置文件路径和文件前缀名称
$path = "./";
$prefix='nx_';
$output_file = $prefix.time().rand(100,999).'.jpg';
$path = $path.$output_file;
// 创建将数据流文件写入我们创建的文件内容中
$ifp = fopen( $path, "wb" );
fwrite( $ifp, base64_decode( $base_img) );
fclose( $ifp );
header(
'Content-type:text/html;charset=utf-8'
);
//读取图片文件,转换成base64编码格式
$image_file
=
'./4296762_165319032930_2.jpg'
;
$image_info
=
getimagesize
(
$image_file
);
$base64_image_content
=
"data:{$image_info['mime']};base64,"
.
chunk_split
(
base64_encode
(
file_get_contents
(
$image_file
)));
//保存base64字符串为图片
//匹配出图片的格式
if
(preg_match(
'/^(data:\s*image\/(\w+);base64,)/'
,
$base64_image_content
,
$result
)){
$type
=
$result
[2];
$new_file
=
"./test.{$type}"
;
if
(
file_put_contents
(
$new_file
,
base64_decode
(
str_replace
(
$result
[1],
''
,
$base64_image_content
)))){
echo
'新文件保存成功:'
,
$new_file
;
}
}