La codifica base64 è un modo per codificare i dati binari usando solo un insieme di 64 caratteri stampabili.
Il trucco consiste nel raggruppare i bit originali in pacchetti di 6 bit (6 bit possono assumere un valore compreso tra 0 e 63) e quindi inviare la lettera corrispondente nella sua codifica ascii di 8 bit. Quindi ogni gruppo di 3 byte binari (3 * 8 = 24 bit) può essere codificato in 4 cifre base64 (4x6 = 24). Se il numero totale di byte non è un multiplo di 3, le tue 4 ultime cifre di base64 avranno alcuni caratteri di riempimento che indicheranno il numero di bit inutili.
Quindi la lunghezza esatta della codifica base64 è: floor((binary_size+2) / 3) * 4
. Il rapporto base64 / originale converge a 4/3 per le grandi dimensioni, ma per i dati piccoli il rapporto può essere più elevato (ad esempio 4 per un messaggio originale di 1 byte). Poiché base64_encode()
codifica in modo conforme a MIME, devi contare anche le nuove righe (almeno uno ogni 76 caratteri di base64).
Per la decodifica è esattamente l'opposto. Per calcolare la lunghezza esatta devi sapere se alla fine ci sono uno o due caratteri di riempimento, ma se vuoi conoscere una dimensione massima, è solo (base64_size/4)*3
.
Ma indipendentemente dalla dimensione più o meno gonfiata della codifica base64: l'immagine decodificata dovrebbe avere esattamente la stessa dimensione di quella codificata. Lo schema di codifica base64 lo garantisce.