php size of base64_encode string - file
Asked Answered
P

4

13

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

Pulverulent answered 21/3, 2011 at 3:30 Comment(0)
A
29
strlen(base64_decode($encoded_data));

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

Asdic answered 21/3, 2011 at 3:34 Comment(1)
this is the working codeEnto
R
16

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.

Rozamond answered 21/3, 2011 at 3:54 Comment(0)
E
8

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;
    }
}
Eggshell answered 24/1, 2018 at 6:40 Comment(0)
N
-1

Use the following code :

function getFileSizeInKb($base64string){
    $bytes = strlen(base64_decode($base64string));
    $roughsize = (((int)$bytes) / 1024.0)* 0.67;
    return round($roughsize,2);
}
Narcotism answered 25/4, 2016 at 9:51 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.