Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ArrayBuffer as source (image tag) / Display image from Blob

I'm trying to set an arraybuffer as source of an image tag. It seems that I've got 2 problems. My console is logging:

GET unsafe:data:image/jpg;base64, [object ArrayBuffer] net::ERR_UNKNOWN_URL_SCHEME

so my question is:
1. How do I convert my 'blob' to a string?
(if necessary: 2. How to remove the unsafe flag?)

html:

<img src="data:image/jpg;base64, {{blob}}">

ts (blob is transferred):

export class ImgViewerComponent implements OnInit {

    @Input('blob') blob: ArrayBuffer;

    constructor() { }

    ngOnInit() {
    }

}
like image 892
guwluws Avatar asked Jan 28 '23 00:01

guwluws


1 Answers

Okay found some good solutions:

  1. Converting ArrayBuffer to string:

    function _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 );
    }
    

    ArrayBuffer to base64 encoded string

  2. Remove the unsafe prefix:

    import {DomSanitizer} from '@angular/platform-browser';
    ...
    constructor(private sanitizer:DomSanitizer){}
    ...
    sanitize( url:string ) {
      return this.sanitizer.bypassSecurityTrustUrl(url);
    }
    

    How to avoid adding prefix “unsafe” to link by Angular2?

Now my Html looks like the following:

<img [src]="sanitize('data:image/jpg;base64, ' + _arrayBufferToBase64(blob))">
like image 67
guwluws Avatar answered Jan 31 '23 22:01

guwluws