typescript Angular:为什么HTML2Canvas需要这么长时间才能截图?

vvppvyoh  于 2023-03-31  发布在  TypeScript
关注(0)|答案(1)|浏览(178)

我需要在用户点击保存弹出窗口时拍摄当前HTML状态的图像,然后将其存储在数据库中。为此,我使用HTML 2Canvas,并在对话框的关闭事件上调用函数,primeng动态对话框组件。问题是执行HTML 2Canvas的时间太长,而且在执行时会暂停屏幕。我应该使用其他库吗?或者是否有任何方法可以加快此进程在后台运行时关闭对话框
注意:我使用的是Angular 14.2.10
下面是我尝试使用的代码

@ViewChild("screen", { static: true }) screenRef: ElementRef<any>;

dialogRef.onClose.subscribe(data => {
  if (data) {
     this.capture()
  }
});

capture(){
const dimensions = this.screenRef.nativeElement.getBoundingClientRect();
let current = this
**html2canvas(this.screenRef.nativeElement, {
width: dimensions.width,
height: dimensions.height,
useCORS: true,
})**.then(canvas => {
this.layoutImage = canvas.toDataURL("image/jpeg");
});
}

注意:执行粗体/突出显示部分花费的时间太长我还尝试使用非常简单的div执行它,但仍然面临相同的问题

jdgnovmf

jdgnovmf1#

你可以尝试几个调整来减小图像大小和加快处理速度
1.使用比例值,即- html2canvas.default(document.body,{ scale:0.1,
1.传递质量参数- canvas.toDataURL(“image/png”,1.0),
1.在对话框关闭事件中,使用angular web worker在后台线程中运行所有繁重的提升。
干杯!

相关问题