На стороне клиента для браузеров, поддерживающих Canvas, можно закодировать в base64 как-то так:
var canvas = document.createElement("canvas");
canvas.width = "…px";
canvas.height = "…px";
var context = canvas.getContext("2d");
// далее отрисовываем изображение в context
var base64Data = context.getImageData(); // получаем закодированное изображение
Но не уверен что во всех браузерах работает метод getImageData.
А как сделать для Internet Explorer без понятия.
Подробнее про Canvas можно почитать
здесь.