php size of base64_encode string - file

2019-02-10 01:02发布

I'm wondering how could I know the file size of a base64_encoded string? For instance:

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

Thanks

标签: php filesize
4条回答
家丑人穷心不美
2楼-- · 2019-02-10 01:23

Try this one, gives you size in Bytes, KB and MB too..

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;
    }
}
查看更多
Bombasti
3楼-- · 2019-02-10 01:24

Use the following code :

function getFileSizeInKb($base64string){
    $bytes = strlen(base64_decode($base64string));
    $roughsize = (((int)$bytes) / 1024.0)* 0.67;
    return round($roughsize,2);
}
查看更多
放荡不羁爱自由
4楼-- · 2019-02-10 01:24

If you want to know the size without decoding, I believe the following works:

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

Or:

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

Otherwise, just use strlen() on the decoded data as Marc as suggested.

查看更多
我想做一个坏孩纸
5楼-- · 2019-02-10 01:33
strlen(base64_decode($encoded_data));

And as a rough rule of thumb, base64 encoding increases the original data in size by about 33%

查看更多
登录 后发表回答