2012-07-09 102 views
58

Si convierto una imagen (jpg o png) a base64, ¿será más grande o tendrá el mismo tamaño? ¿Cuánto más grande será?tamaño de imagen codificada en base64

¿Se recomienda utilizar imágenes codificadas en base64 en mi sitio web?

+1

El único momento en el que desearía hacer algo así es restringir los recursos de texto sin formato y, por alguna razón, no podría usar un formato de imagen sin formato. – Wug

+0

Aquí hay una buena respuesta: http://stackoverflow.com/questions/1533113/calculate-the-size-to-a-base-64-encoded-message – Steed

+0

base64 hace que los enlaces profundos sean imposibles. Esto puede ser un plus. – damoeb

Respuesta

88

Se habrá aproximadamente 37% más grande:

Muy a grandes rasgos, el tamaño final de Base64 datos binarios codificados en es igual a 1,37 veces el tamaño original de datos

Fuente: http://en.wikipedia.org/wiki/Base64

+16

No, no 137% más grande, 137% del tamaño original :-) 37% más grande (según su fuente). –

+2

Yo diría que es más o menos 4/3 del tamaño original. – kiwixz

+0

¿Existe alguna limitación para que el tamaño de imagen convierta la imagen a base64? – 151291

4

Será más grande en base64.

Base64 utiliza 6 bits por byte para codificar datos, mientras que el binario usa 8 bits por byte. Además, hay un pequeño colchón sobrecargado con Base64. No todos los bits se usan con Base64 porque se desarrolló en primer lugar para codificar datos binarios en sistemas que solo pueden procesar datos no binarios correctamente.

Eso significa que la imagen codificada será aproximadamente un 25% más grande, más una sobrecarga constante para el relleno.

5

La codificación de una imagen en base64 lo hará un 30% más grande.

Consulte los detalles en el artículo de Wikipedia sobre el Data URI scheme, donde se afirma:

URIs de datos codificados en base 64 son un tercio más grande en tamaño que su equivalente binario. (Sin embargo, esta sobrecarga se reduce a 2-3% si el servidor HTTP comprime el uso de gzip respuesta)

2

definitivamente le costará más espacioAncho de bandasi desea utilizar imágenes codificadas en base64. Sin embargo, si su sitio tiene muchas imágenes pequeñas, puede disminuir el tiempo de carga de la página codificando sus imágenes en base64 y colocándolas en html. De esta forma, el navegador del cliente no necesitará hacer muchas conexiones a las imágenes, sino que las tendrá en html.

+0

Esto sin embargo no será un problema una vez que HTTP 2 realmente llegue. – Philip

+0

@Philip Es cierto, pero me gusta el factor de portabilidad al tener todos los recursos contenidos en el archivo HTML. Eso ayudará con el almacenamiento en caché web móvil en áreas con redes irregulares. – aalaap

+0

@aalaap El problema es que si haces un cambio en la página, entonces necesitas volver a cargar todo el contenido, incluidas las imágenes. En caso de que tenga los activos separados, puede tener una edad mayor en esos y se almacenará en caché y no se volverá a cargar en caché caducar en la página en sí. – Philip

11

Aquí está a really helpful overview of when to base64 encode and when not to por David Calhoun.

Respuesta básica = los archivos codificados gzipped base64 serán aproximadamente comparables en tamaño de archivo a binario estándar (jpg/png). Los archivos binarios de Gzip tendrán un tamaño de archivo más pequeño.

Takeaway = Hay alguna ventaja en la codificación y gzip de los iconos de tu UI, etc., pero no es aconsejable hacerlo para obtener imágenes más grandes.

0

Tamaño de base 64 imágenes

base 64 utiliza 64 caracteres diferentes y esto es 2^6. Así que base64 almacena 6 bits por 8 bits de caracteres. Entonces, la proporción es de 6/8 de datos no convertidos a datos de base64. Este no es un cálculo exacto, sino un cálculo aproximado.

Ejemplo:

Una imagen 48kb necesita alrededor de 64kb como base64 convierte imagen.

Cálculo: (48/6) * 8 = 64

simple calculadora de CLI en los sistemas Linux:

$ cat /dev/urandom|head -c 48000|base64|wc -c 
64843 

o el uso de una imagen:

$ cat my.png|base64|wc -c 

base64 imágenes y sitios web

Esta pregunta es mucho más difícil de responder En términos generales, cuanto más grande es la imagen, menos sentido tiene usar base64. Pero tenga en cuenta los siguientes puntos:

  • Muchas imágenes incrustadas en un archivo HTML o CSS-File pueden tener cadenas similares. Para PNG, a menudo encuentras repetidos caracteres "A". Usando gzip (a veces llamado "desinflar"), puede haber incluso un triunfo en el tamaño. Pero depende del contenido de la imagen.
  • Solicitud de sobrecarga de HTTP1.1: especialmente con muchas cookies puede tener fácilmente unos pocos kilobytes de sobrecarga por solicitud. La incrustación de imágenes base64 podría ahorrar ancho de banda.
  • No base64 codifica imágenes SVG, porque gzip es más efectivo en XML que en base64.
  • Programación: en imágenes generadas dinámicamente, es más fácil enviarlas en una solicitud para coordinar dos solicitudes dependientes.
  • Enlaces profundos: si desea evitar la descarga de la imagen, es un poco más complicado extraer una imagen de una página HTML.

Así que la respuesta es: Depende.

Cuestiones relacionadas