Asmita Pathak Ответов: 1

Как отобразить изображение из двоичных данных в javascript?


Я храню двоичные данные в массиве (videoDataArr) и хочу отображать их в браузере с помощью javascript.

Что я уже пробовал:

for (var i = 0; i < video1Size - 14; i++)
{
    video1Data += String.fromCharCode(chunk8View[dataIndex++]);
}
        
video1Data += video1;
// alert("vid1:"+video1Data);       
       
if(partnumber == 003)
{
    //alert("partnumber:" + partnumber + "packetnumber:");

    videoDataArr.push(video1Data);

    alert("videoDataArr:" + videoDataArr);
              
    var imgdata=btoa(videoDataArr);
    //displayImg(imgdata);
            
    window.open('data:image/jpeg;,' + imgdata);
}

Beginner Luck

- а ты каким пользуешься?? canvas или svg или изображение для отображения, потому что они используют немного другой способ??

1 Ответов

Рейтинг:
2

Sangeet Das

Нужно преобразовать его в base64.

Для этого у JS есть функция btoa ().

Например:

var img = document.createElement('img');
img.src = 'data:image/jpeg;base64,' + btoa('your-binary-data');
document.body.appendChild(img);

Но я думаю, что ваши двоичные данные в pastebin недействительны - данные jpeg должны заканчиваться на 'ffd9'.

Обновление:

Нужно написать простой шестнадцатеричный конвертер в base64:

function hexToBase64(str) {
    return btoa(String.fromCharCode.apply(null, str.replace(/\r|\n/g, "").replace(/([\da-fA-F]{2}) ?/g, "0x$1 ").replace(/ +$/, "").split(" ")));
}

И использовать его:

img.src = 'data:image/jpeg;base64,' + hexToBase64('your-binary-data');

См. рабочий пример с вашими шестнадцатеричными данными в jsfiddle