Ask your technical questions on forums or here :
ASP.NET or MVC | C# | Windows Phone
Microsoft Technology Journals by Abhimanyu K Vatsa
HOME ABOUT RAZOR BOOK SPEAKING MVC ASP.NET JQUERY VIDEOS ARCHIVE CONTACT

8 Feb 2014

Base64 Encode Image in Website - Web Essential

In this article you will learn about Base64 Encode Image, why we encode image and how it can improve website performance. We are going to make use of Web Essential which is a must have Visual Studio extension.

Web Essential

Web Essentials extends Visual Studio with a lot of new features that web developers have been missing for many years.

If you ever write CSS, HTML, JavaScript, TypeScript, CoffeeScript or LESS, then you will find many useful features that make your life as a developer easier.

This extension is for all Web developers using Visual Studio. This extension was first introduced in August 2012 by Mads Kristensen.

Web Essentials 1.7 for Visual Studio 2013 it is now easier than ever to work with images.

If you don’t have this extension installed in your favorite Visual Studio IDE then you are missing many features, you can download it quickly from here.

Now let’s start exploring Base64 Encode Image and embedding it in website.

Embedding Base64 Encoded Images and why?

First let’s quickly understand what is Base64 Encoding of Images, then we will talk about how we can embed them in websites to decrease the number of requests and increase performance.

Base64 encoding schemes are commonly used when there is a need to encode binary data (like images) that needs to be stored and transferred over media that is designed to deal with textual data. This is to ensure that the data remains intact without modification during transport.

In short, Base64 Encoding means converting that image or other binary data into textual data.

Why we encode images into Base64 on website?

To understand this, let’s understand a situation. We want a background image on the website and by default background images loads each time we jump from one page to other which heavily decrease the performance by increasing number of requests and so on.

Here is an animated image, notice when I jump from one page to another, it requests image (site-bk.png) every time.


Now, let’s encode it to base64 and embed it into style. To do this you can simply put the cursor and it will show us a smart tag where we can optimize image and embed as base64 dataUri. You will learn image optimization later in this post. Here is the image.


Once we click on ‘Embed as base64 dataUri’, it will generate following styles.


You can see two background-image in the red rectangular box. First ‘background-image’ is actually base64 converted text and second ‘background-image’ is traditional one, notice a star mark before it. This is a little hack for IE6 and IE7, they can’t recognize the base64 text, so it is better to keep to make older IE happy.

We can still see image preview on either ‘background-image’ styles. Here is image.


Now, re-build and re-run the application and try to jump from one page to another. Because image is no longer here (it is now base64 encoded text and part of CSS file) so you can’t see image (site-bk.png) in the request list.



If we click on base64 encoded image, smart tag will display option to i) optimize dataUri (image) ii) Re-embed dataUri (in case physical image updated by designer) iii) Save to file means turn that encoded image text back into physical image file. Here is image.


In the next post you will learn optimizing physical images or base64 encoded image texts.

Hope this helps.

Comment using Google Services (2 comments):

  1. Hi, doesnt modern browsers cache the background image instead of loading it everytime? Because then, the performance would be similair to using Base64

    ReplyDelete
  2. I recommend http://base64image.org web tool to encode image to Base64 and back to Image. It supports drag and drop, multiple files and automatic CSS, HTML generation.

    ReplyDelete