Загоняем картинку в canvas и
сохраняем в base64 в выбранном формате.
А вообще такие вещи
гуглятся на раз-два.
Update:
Я не понимаю, откуда у вас идёт вторая загрузка. Даже по логике в этом нет абсолютно никакого смысла.
А вот изображение должно удовлетворять политике происхождения, иначе будет выброшено исключение с сообщением о нарушении безопасности.
HTML<img id="myImage" src="/i/pic.png">
<canvas id="myCanvas"></canvas>
JSvar myImage = document.getElementById('myImage'),
myCanvas = document.getElementById('myCanvas'),
context = myCanvas.getContext('2d');
if (!myImage.complete) {
myImage.addEventListener('load', function (e) {
done();
});
} else {
done();
}
function done () {
myCanvas.width = myImage.width;
myCanvas.height = myImage.height;
context.drawImage(myImage, 0, 0);
console.log(myCanvas.toDataURL());
}