在前台有时候上传图片时会以base64数据流的形式进行上传,那如何在后台用php脚本来判断base64图片数据流的大小呢?下面就给出一种简单的php判断base64数据流大小的方法。

php 获取base64图片大小的方法

php自定义获取base64图片大小的方法

/**
 * # php获取base64格式图片的大小
 * @param string $base64img base64格式的图片
 * @param string $type 默认获取的大小的单位为KB,可以指定单位为 B
 * 
 * @return string 
 */
function get_base64img_size($base64img,$type = 'KB')
{
    if(preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64img, $result)){
        $type = $result[2];
        $base_img = str_replace($result[1], '', $base64img);
        $base_img = str_replace('=','',$base_img);
        $img_len = strlen($base_img);
        $file_size = intval($img_len - ($img_len/8)*2);
        if($type == 'B'){
            return $file_size.'B';
        }
        $file_size = number_format(($file_size/1024),2);
        if($type == 'KB'){
            return $file_size.'KB'
        }
        //可以自己加个转成MB,GB的逻辑
        $file_size = number_format(($file_size/1024),2);
        if($type == 'MB'){
            return $file_size.'MB'
        }
        $file_size = number_format(($file_size/1024),2);
        if($type == 'GB'){
            return $file_size.'GB'
        }        
    }
    return 0;
}

函数的调用

$base = 'data:image/png;base64,sdfsdfsd.....'; //图片的base64数据流
var_dump(get_base64img_size($base));