Вы можете попытаться преобразовать буфер массива в base64 вручную перед отображением GIF. Попробуйте следующее
Сервис изображений
import { pipe } from 'rxjs';
import { map } from 'rxjs/operators';
@Injectable()
export class ImageService() {
private arrayBufferToBase64(buffer: any) {
let binary = '';
const bytes = new Uint8Array(buffer);
const len = bytes.byteLength;
for (let i = 0; i < len; i++) {
binary += String.fromCharCode(bytes[i]);
}
return window.btoa(binary);
}
public getImage(id: number): observable<any> {
return this.http.get(BASE_URL + '/' + id).pipe(map(buffer => this.arrayBufferToBase64(buffer)));
}
}
Контроллер
import { DomSanitizer } from '@angular/platform-browser';
export class AppComponent implements OnInit, OnDestroy {
imageSource: any;
constructor(private sanitizer: DomSanitizer) {}
ngOnInit() {
this.imageService.getImage(1).subscribe(
base64 => {
this.imageSource = this.sanitizer.bypassSecurityTrustResourceUrl(`data:image/gif;base64, ${base64}`);
},
error => {
// handle error
}
);
}
}
Шаблон
<img [src]="imageSource" alt="Image Source">
Функция arrayBufferToBase64()
получена из здесь .