我正在从网络套接字接收一个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()
方法似乎可以使浏览器更好地管理内存,因为内存似乎更稳定,但这并不公然。
有没有一种我应该比其他方法更喜欢的方法?如果是,为什么?