您现于de位置乃:亚博 > APP基础

亚博 2017-11-20 APP基础 1813

APP实现将base64格式图片保存于指定目录de方法

APP对Base64de支持非常好 有内置debase64_encode与base64_decode负责图片deBase64编码与解码.


编码上 只要将图片流读取到 而后使用base64_encode进行进行编码即可得到.


而解码就略微麻烦1点 究其原因于于把图片编码成base64字符串后 编码内会加入这些字符 data:image/png;base64 本来乃用于base64进行识别de.但乃如果直接放到app里用base64_decode函数解码会导致最终保存de图片文件格式损坏 而解决方法就乃先去掉这1串字符:


示例:

header('Content-type:text/html;charset=utf-8');
        $base64_image_content = 'data:image/jpeg;base64,xxxxxxxxxxxxxxxxxxxxxx'; //

        //匹配出图片de格式
        if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){
            $type = $result[2];
            $new_file = "uploads/test/".date('Ymd',time())."/";
            if(!file_exists($new_file)) {
                //检查乃否有该文件夹 如果没有就创建 并给予好的权限
                mkdir($new_file, 0700);
            }
            $new_file = $new_file.time().".{$type}";
            if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))){
                echo '新文件保存成功:', $new_file;
            }else{
                echo '新文件保存失败';
            }
        }


简单写法:

$base64_string= explode(',', $base64_string); //截取data:image/png;base64, 这个逗号后de字符
$data= base64_decode($base64_string[1]);  //对截取后de字符使用base64_decode进行解码
file_put_contents($url, $data); //写入文件并保存


相比上面de写法其实乃1样de 只不过上面de乃稍微完善1点de.


以上两种写法都可以.

评论