缓冲到图像:createObjectURL()还是手动创建dataUrl?

时间:2018-07-09 12:13:38

标签: javascript image buffer

我正在从网络套接字接收一个jpeg图像缓冲区。

我正在这样显示图像:

var imgBuffer = new Uint8Array(res.data);    
this.receivedImage = "data:image/jpeg;base64," + this._arrayBufferToBase64(imgBuffer);

    private _arrayBufferToBase64( buffer ) {
        var binary = '';
        var bytes = new Uint8Array( buffer );
        var len = bytes.byteLength;
        for (var i = 0; i < len; i++) {
            binary += String.fromCharCode( bytes[ i ] );
        }
        return window.btoa( binary );
    }

在我的Angular组件中,我有一个img标签,它引用了ReceivedImage变量,如下所示:

<img [src]="receivedImage" id="liveView" style="background-color:black;" />

这很好用。

我注意到我也可以这样进行:

var blob = new Blob([imgBuffer], {'type': 'image/jpeg'});
this.receivedImage = this.sanitizer.bypassSecurityTrustResourceUrl(URL.createObjectURL(blob));

哪个也运行得很好。

createObjectURL()方法似乎可以使浏览器更好地管理内存,因为内存似乎更稳定,但这并不公然。

有没有一种我应该比其他方法更喜欢的方法?如果是,为什么?

0 个答案:

没有答案