Javascript Angular2-渲染图像时超出最大调用堆栈错误

Javascript Angular2-渲染图像时超出最大调用堆栈错误,javascript,html,angular,image-rendering,Javascript,Html,Angular,Image Rendering,在我的Angular2应用程序中,我想显示一个Uint8Array格式的图像。但我得到“超过最大调用堆栈”。我可以渲染大小约48Kb的图像,没有错误。但是当图像大小大于300Kb时,我就会出现这个错误。以下是我渲染图像的方式: (<HTMLInputElement>document.getElementById("imagePreview")).src = "data:image/" + type + ";base64," + btoa

在我的Angular2应用程序中,我想显示一个Uint8Array格式的图像。但我得到“超过最大调用堆栈”。我可以渲染大小约48Kb的图像,没有错误。但是当图像大小大于300Kb时,我就会出现这个错误。以下是我渲染图像的方式:

(<HTMLInputElement>document.getElementById("imagePreview")).src = "data:image/" + type + ";base64," +
                        btoa(String.fromCharCode.apply(null, objData.Body));
(document.getElementById(“imagePreview”)).src=“data:image/”+type+”base64,”+
btoa(String.fromCharCode.apply(null,objData.Body));
有人能告诉我我做这件事的方式是否正确吗。如果没有,请告诉我如何正确执行该操作。

String.fromCharcode()
将遇到超过最大调用堆栈的
大字符串数据

为了能够将所述对象转换为
base64
,您需要基于字符串长度实现一个循环。我想到了这样的事情:

let img: HTMLInputElement = (<HTMLInputElement>document.getElementById("imagePreview"));
let bin : string = '';

for (let i = 0, l = objData.Body.length; i < l; i++) {
    bin += String.fromCharCode(objData.Body[i]);
}

img.src = "data:image/" + type + ";base64," + btoa(bin);
让img:HTMLInputElement=(document.getElementById(“imagePreview”);
让bin:string='';
for(设i=0,l=objData.Body.length;i
将字符串分为比1个字符更大的块可能更有效,但这取决于您找到最快速的方法:)

string.fromCharcode()
将遇到超过最大调用堆栈的
大字符串数据

为了能够将所述对象转换为
base64
,您需要基于字符串长度实现一个循环。我想到了这样的事情:

let img: HTMLInputElement = (<HTMLInputElement>document.getElementById("imagePreview"));
let bin : string = '';

for (let i = 0, l = objData.Body.length; i < l; i++) {
    bin += String.fromCharCode(objData.Body[i]);
}

img.src = "data:image/" + type + ";base64," + btoa(bin);
让img:HTMLInputElement=(document.getElementById(“imagePreview”);
让bin:string='';
for(设i=0,l=objData.Body.length;i

也许将字符串分成比1个字符更大的片段更有效,但这取决于您找到最快速的方法:)

我在从DB渲染base64 16K分辨率图像时遇到了这个问题,但与上面的答案无关

这就是我犯的错误。

正如你们所见,这是由消毒过程引起的。因此,在我的情况下,我必须信任该图像,以防止运行消毒检查。 这根绳子为我解决了问题,希望能帮助到别人

const safeUrl = domSanitizer.bypassSecurityTrustUrl(base64string)
像那样传过去

<img [src]="img">

我在从DB渲染base64 16K分辨率图像时遇到了这个问题,但与上面的答案无关

这就是我犯的错误。

正如你们所见,这是由消毒过程引起的。因此,在我的情况下,我必须信任该图像,以防止运行消毒检查。 这根绳子为我解决了问题,希望能帮助到别人

const safeUrl = domSanitizer.bypassSecurityTrustUrl(base64string)
像那样传过去

<img [src]="img">


是否有组件和实现?抱歉,组件和实现太长,无法粘贴到此处。是否有组件和实现?抱歉,组件和实现太长,无法粘贴到此处。