Javascript Angular2-渲染图像时超出最大调用堆栈错误
在我的Angular2应用程序中,我想显示一个Uint8Array格式的图像。但我得到“超过最大调用堆栈”。我可以渲染大小约48Kb的图像,没有错误。但是当图像大小大于300Kb时,我就会出现这个错误。以下是我渲染图像的方式: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
(<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">
是否有组件和实现?抱歉,组件和实现太长,无法粘贴到此处。是否有组件和实现?抱歉,组件和实现太长,无法粘贴到此处。