php64大小的base64_encode字符串 - 文件

时间:2011-03-21 03:30:07

标签: php filesize

我想知道如何知道base64_encoded字符串的文件大小?例如:

$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
       . 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
       . 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
       . '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$data = base64_decode($data);

由于

4 个答案:

答案 0 :(得分:14)

strlen(base64_decode($encoded_data));

作为一个粗略的经验法则,base64编码将原始数据的大小增加了大约33%

答案 1 :(得分:10)

如果你想知道没有解码的尺寸,我相信以下工作:

$size = (int) (strlen(rtrim($data, '=')) * 3 / 4);

或者:

$size = (strlen($data) * 3 / 4) - substr_count(substr($data, -2), '=');

否则,只需将解码数据上的strlen()用作建议的Marc。

答案 2 :(得分:3)

试试这个,给你大小字节,KB和MB ..

public function getBase64ImageSize($base64Image){ //return memory size in B, KB, MB
    try{
        $size_in_bytes = (int) (strlen(rtrim($base64Image, '=')) * 3 / 4);
        $size_in_kb    = $size_in_bytes / 1024;
        $size_in_mb    = $size_in_kb / 1024;

        return $size_in_mb;
    }
    catch(Exception $e){
        return $e;
    }
}

答案 3 :(得分:-1)

使用以下代码:

function getFileSizeInKb($base64string){
    $bytes = strlen(base64_decode($base64string));
    $roughsize = (((int)$bytes) / 1024.0)* 0.67;
    return round($roughsize,2);
}