Si je convertis une image (jpg ou png) en base64, elle sera plus grande ou aura la même taille? Combien sera-t-il plus grand?
Est-il recommandé d'utiliser des images encodées en base64 sur mon site Web?
Il sera environ 37% plus grand:
En gros, la taille finale des données binaires codées en Base64 est égale à 1,37 fois la taille originale des données.
Voici n aperçu très utile de quand coder en base64 et quand ne pas le faire par David Calhoun.
Réponse de base = Les fichiers codés en base64 gzippés seront à peu près comparables en taille au format binaire standard (jpg/png). Les fichiers binaires Gzip'd auront une taille de fichier plus petite.
À emporter = Il existe certains avantages à encoder et gzipper les icônes de votre interface utilisateur, etc.
Ce sera plus gros en base64.
Base64 utilise 6 bits par octet pour coder les données, alors que binaire utilise 8 bits par octet. En outre, il y a un peu de temps de remplissage avec Base64. Tous les bits ne sont pas utilisés avec Base64 car il a été développé à l'origine pour coder des données binaires sur des systèmes ne pouvant traiter correctement que des données non-binaires.
Cela signifie que l'image encodée sera environ 25% plus grande, plus une surcharge constante pour le remplissage.
Encoder une image en base64 la rendra environ 30% plus grosse.
Voir les détails dans l'article de wikipedia sur le schéma d'URI de données , où il est indiqué:
Les URI de données codées en Base64 sont 1/3 plus grandes que leur équivalent binaire. (Cependant, cette surcharge est réduite à 2-3% si le serveur HTTP compresse la réponse à l'aide de gzip)
Taille de base64-images
Base64 utilise 64 caractères différents, ce qui correspond à 2 ^ 6. Donc, base64 stocke 6 bits par caractère de 8 bits. La proportion de données non converties en données base64 est donc de 6/8. Ce n'est pas un calcul exact, mais une estimation approximative.
Exemple:
Une image de 48 Ko nécessite environ 64 Ko d’image convertie en base64.
Calcul: (48/6) * 8 = 64
Calculateur CLI simple sur les systèmes Linux:
$ cat /dev/urandom|head -c 48000|base64|wc -c
64843
Ou en utilisant une image:
$ cat my.png|base64|wc -c
images base64 et sites Web
Il est beaucoup plus difficile de répondre à cette question. De manière générale, plus l'image est grande et moins logique en utilisant base64. Mais considérons les points suivants:
Donc, la réponse est: ça dépend.
Cela vous coûtera certainement plus d’espace et de bande passante si vous souhaitez utiliser des images codées en base64. Toutefois, si votre site contient de nombreuses petites images, vous pouvez réduire le temps de chargement de la page en codant vos images au format base64 et en les plaçant en html. De cette façon, le navigateur client n'aura pas besoin de créer beaucoup de connexions aux images, mais les aura en HTML.