这几天一直在写php脚本中关于图片处理的东西,随手记录一下利用php脚本将base64格式的图片转成实体图片并保存到本地的方法,方法非常的简单,自定义了一个函数,直接调用即可。

php将base64格式的图片转成本地图片并保存的方法

自定义函数

/**
 * # php base64格式的图片转成普通图片并保存到本地
 * @param string $base64img base64格式的图片
 * @param string $path 图片保存的路径
 * @param string $imgname 指定保存图片的名称,如不指定则以时间戳代替
 * 
 * @return string/bool 成功则返回图片的路径失败则返回FALSE
 * 
 * @author Mochu
 * @link http://feiniaomy.com
 */
function base64image_save($base64img,$path,$imgname = null)
{
    //匹配出图片的格式
    if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64img, $result)){
        $type = $result[2];
        //指定文件存放的目录
        $new_file = $path."/";
        //检查是否有该文件夹,如果没有就创建,并给予最高权限
        if(!file_exists($new_file)){
            mkdir($new_file, 0700);
        }
        //组合图片地址(图片存放地址+图片名+图片后缀)
        $new_file = $imgname == null ? $new_file.time().".{$type}" : $new_file.$imgname.".{$type}";
        //保存图片
        if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64img)))){
            //返回图片地址路径
            return '/'.$new_file;
        }
    
    }
    return false;
}

函数的调用

注:下面的$base变量为一个base64格式图片的字符串,各位测试的话请自行修改!

$base = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEU.......';
base64image_save($base,'img','logo')
// 如果返回 false 则表示 base64 格式不合法,如果保存成功则返回图片的路径。