Sei sulla pagina 1di 6

Imgenes embebidas

Segn los estudios realizados por Yahoo! el tiempo de carga de una


pgina media depende en un 80% de la parte del cliente y en un 20% de
la parte del servidor. Los navegadores de los usuarios dedican la mayor
parte del tiempo a descargar imgenes, archivos JavaScript, hojas de
estilos CSS y otros recursos externos.
Por este motivo, las mejoras en la parte del cliente generan muchos ms
beneficios que las mejoras en la parte del servidor. De todos los
elementos de la parte del cliente, las imgenes son normalmente las que
ms penalizan el rendimiento. Adems del peso de cada imagen, el
rendimiento se resiente porque cada imagen requiere realizar una
peticin al servidor. Como los navegadores tienen un lmite de
conexiones simultneas con el servidor (entre 2 y 8), la descarga de una
pgina con muchas imgenes se bloquea continuamente.
Como ya se explic en las secciones anteriores, la solucin para mejorar
el rendimiento de las imgenes consiste en combinarlas en una imagen
grande llamada sprite CSS y utilizar la propiedad background-image en cada
elemento HTML.
Adems de los sprites CSS existe otra tcnica que permite embeber o
incluir las imgenes en la propia pgina HTML u hoja de estilos CSS. La
tcnica se suele denominar "imgenes embebidas" o "imgenes en
lnea".
Normalmente, en las hojas de estilos y pginas HTML slo se indica la
URL de la imagen que debe descargar el navegador. En la tcnica de las
imgenes embebedidas no se indica la URL, sino que se incluyen

directamente los bytes de la imagen, para que el navegador pueda


mostrarla de forma inmediata.
Los datos de la imagen se incluyen mediante un esquema especial
llamado data:, de la misma forma que las URL se indican mediante el
esquema http:, las direcciones de correo electrnico mediante el
esquema mailto:, etc. El esquema data: se define en el estndar RFC
2397 y su sintaxis es la siguiente:
data:[<mediatype>][;base64],<data>

El atributo <mediatype> corresponde al tipo de contenido de los bytes que


se incluyen. Los tipos de contenido estn estandarizados y los que
utilizan habitualmente las imgenes son: image/gif,image/jpeg y image/png. Si
no se indica el tipo de forma explcita, el navegador supone que es
text/plain,

es decir, texto normal y corriente.

El valor base64 es opcional e indica que los datos de la imagen se han


codificado segn el formatobase64. Si no se indica este valor, el
navegador supone que los bytes de la imagen no estn codificados.
A continuacin se muestra el ejemplo de una imagen HTML (<img>) que
no se indica mediante una URL sino que se incluyen sus bytes
directamente en la pgina:

Usar imgenes embebidas en etiquetas img


<!-- Imagen externa que el navegador debe descargar desde el servidor
-->
<img alt="Icono de un libro" width="16" height="16"
src="/imagenes/icono_libro.png" />

<!-- Imagen embebida que el navegador puede mostrar directamente


porque ya dispone de sus bytes -->
<img alt="Icono de un libro" width="16" height="16"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAA
QCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcm
UAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHjSURBVDjLdZO/alVBEMZ/5
+TemxAbFUUskqAoSOJNp4KC4AsoPoGFIHY+gA+jiJXaKIiChbETtBYLUbSMR
f6Aydndmfks9kRjvHdhGVh2fvN9uzONJK7fe7Ai6algA3FZCAmQqEF/dnihpK
1v7x7dPw0woF64Izg3Xl5s1n9uIe0lQYUFCtjc+sVuEqHBKfpVAXB1vLzQXFt
dYPHkGFUCoahVo1Y/fnie+bkBV27c5R8A0pHxyhKvPn5hY2MHRQAQeyokF
GJze4cuZfav3gLNYDTg7Pklzpw4ijtIQYRwFx6BhdjtCk+erU0CCPfg+/o2o3Z
I13WUlLGo58YMg+GIY4dmCWkCAAgPzAspJW5ePFPlV3VI4uHbz5S5IQfy/y
ooHngxzFser30iFcNcuAVGw3A0Ilt91IkAsyCXQg5QO0szHEIrogkiguwN2ac
CoJhjnZGKYx4Ujz5WOA2YD1BMU+BBSYVUvNpxkXuIuWgbsOxTHrG3UHIF
WIhsgXtQQpTizNBS5jXZQkhkcywZqQQlAjdRwiml7wU5xWLaL1AvZa8WIjA
LzIRZ7YVWDW5CiIj48Z8F2pYLl1ZR0+AuzEX0UX035mxIkLq0dhDw5vXL9
7fr5O3rfwQHJhPx4uuH57f2AL8BfPrVlrs6xwsAAAAASUVORK5CYII=" />

Usar imgenes embebidas en css


/* Imagen externa que el navegador debe descargar desde el servidor */
ul#menu li { background: #FFF no-repeat center center
url("/imagenes/icono_libro.png"); }

/*Imagen embebida que el navegador puede mostrar directamente porque ya


dispone de sus bytes */
ul#menu li {
background: #FFF no-repeat center center
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAA
AAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUg
SW1hZ2VSZWFkeXHJZTwAAAHjSURBVDjLdZO/alVBEMZ/5+TemxAbFUUskqAoSOJ
Np4KC4AsoPoGFIHY+gA+jiJXaKIiChbETtBYLUbSMRf6Aydndmfks9kRjvHdhGVh2f
vN9uzONJK7fe7Ai6algA3FZCAmQqEF/dnihpK1v7x7dPw0woF64Izg3Xl5s1n9uIe0l
QYUFCtjc+sVuEqHBKfpVAXB1vLzQXFtdYPHkGFUCoahVo1Y/fnie+bkBV27c5R8A0
pHxyhKvPn5hY2MHRQAQeyokFGJze4cuZfav3gLNYDTg7Pklzpw4ijtIQYRwFx6Bhdj
tCk+erU0CCPfg+/o2o3ZI13WUlLGo58YMg+GIY4dmCWkCAAgPzAspJW5ePFPlV3
VI4uHbz5S5IQfy/yooHngxzFser30iFcNcuAVGw3A0Ilt91IkAsyCXQg5QO0szHEIrog
kiguwN2acCoJhjnZGKYx4Ujz5WOA2YD1BMU+BBSYVUvNpxkXuIuWgbsOxTHrG3
UHIFWIhsgXtQQpTizNBS5jXZQkhkcywZqQQlAjdRwiml7wU5xWLaL1AvZa8WIjALz
IRZ7YVWDW5CiIj48Z8F2pYLl1ZR0+AuzEX0UX035mxIkLq0dhDw5vXL97fr5O3rf
wQHJhPx4uuH57f2AL8BfPrVlrs6xwsAAAAASUVORK5CYII=");
}

Ventajas y desventajas
Las principales ventajas de la tcnica de las imgenes embebidas son las
siguientes:

Reduce drsticamente el nmero de peticiones HTTP, lo que


mejora notablemente el rendimiento.

Permite guardar una pgina HTML completa en un nico archivo


HTML (embebiendo todas sus imgenes en su hoja de estilos o en el
propio cdigo HTML).

Mejora el rendimiento de las peticiones HTTPS en las que las


imgenes no se guardan en la cache.

Por contra, sus desventajas son considerables:

El esquema data: slo funciona en los navegadores modernos que


se preocupan de los estndares (Firefox, Safari y Opera). Internet
Explorer 6 y 7 no son capaces de procesar el esquemadata:. Internet
Explorer 8 asegura que permitir utilizar data:, pero solamente para
embeber imgenes en CSS.

El proceso completo es lento y poco flexible, ya que es necesario


codificar las imgenes en base64 y recodificarlas cada vez que se
quieren modificar.

Las imgenes embebidas aumentan considerablemente el tamao


de la hoja de estilos CSS. Adems, la codificacin base64 tambin
aumenta mucho el tamao de los datos de la imagen respecto a sus
bytes originales.

Los navegadores limitan el tamao mximo de los datos que se


pueden embeber mediante data:. Algunos navegadores como Opera
permiten unos 4.000 bytes de datos, mientras que el navegador
Firefox permite hasta 100.000 bytes por cada data:.

Ms informacin
http://librosweb.es/libro/css_avanzado/capitulo_6.html

Pgina para convertir imagen a base 64

https://www.base64-image.de/

Pgina para convertir base64 a imagen


http://codebeautify.org/base64-to-image-converter

Convertir en C# imagen a base 64

byte[] imageArray = System.IO.File.ReadAllBytes(@"D:/1.png");


string base64ImageRepresentation = Convert.ToBase64String(imageArray);

Potrebbero piacerti anche