HTML5/Javascript - DataURL для Blob & Blob для DataURL

У меня есть DataURL с холста, который показывает мою веб-камеру. Я превращаю этот dataURL в blob, используя ответ Matt отсюда: Как преобразовать dataURL в файл-объект в javascript?

Как преобразовать этот капли обратно в тот же DataURL? Я провел день, исследуя это, и я убежден, что это не документировано лучше, если я не ослеп.

EDIT: Существует

var urlCreator = window.URL || window.webkitURL; 
var imageUrl = urlCreator.createObjectURL(blob); 

но он возвращает только очень короткий URL-адрес, который, как представляется, указывает на локальный файл, но мне нужно отправить данные веб-камеры по сети.

Ответы

Ответ 1

Nevermind, он закончил работу после того, как придерживался инструкций в этой теме Показывать изображение из blob с помощью javascript и веб-сайтов и заставляя мой сервер пересылать необработанные (пока) немодифицированные BinaryWebSocketFrames.

Теперь я по-прежнему борюсь с плохими характеристиками холста (< 1fp), но это может стать предметом нового потока.

Ответ 2

Используйте мой код для преобразования между объектами dataURL и blob в javascript. (лучше, чем код в вашей ссылке.)

//**dataURL to blob**
function dataURLtoBlob(dataurl) {
    var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
        bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
    while(n--){
        u8arr[n] = bstr.charCodeAt(n);
    }
    return new Blob([u8arr], {type:mime});
}

//**blob to dataURL**
function blobToDataURL(blob, callback) {
    var a = new FileReader();
    a.onload = function(e) {callback(e.target.result);}
    a.readAsDataURL(blob);
}

//test:
var blob = dataURLtoBlob('data:text/plain;base64,YWFhYWFhYQ==');
blobToDataURL(blob, function(dataurl){
    console.log(dataurl);
});