javascript - 无法以角度从资产文件夹加载图像
问题描述
我有一个大问题。我无法从资产文件夹以角度将图像加载到画布上。
html代码
<div class="container-fluid">
<div class="row">
<div class="col-md-8 canvas-viewer">
<canvas width="240" height="297" style="border:1px solid #d3d3d3;" id="crfCanvas" #crfCanvas></canvas>
</div>
<div class="col-md-4 canvas-anno">
</div>
</div>
</div>
component.ts 代码
export class CanvasComponent implements OnInit {
@ViewChild("crfCanvas", { static: true }) crfCanvas: ElementRef;
constructor() { }
ngOnInit() {
let canvas = this.crfCanvas.nativeElement;
let ctx = canvas.getContext("2d");
let img = new Image();
img.src = "../../assets/aCRF-PRV111_CLN-001 v1.4-images/aCRF-PRV111_CLN-001 v1.4-blank_0.jpg";
ctx.drawImage(img, 10, 10, 250, 250);
}
}
解决方案
有几点需要考虑:
ViewChild 绑定到视图,因此最好等待视图完成初始化(使用 ngAfterViewInit 钩子),但 ngOnInit 也可以工作(只是如果您将来需要考虑偏移等以绘制到画布中,它可能会咬你:)
图像加载是一个异步任务,您需要在尝试绘制图像之前利用 onload 钩子
使用“/assets/..”网址来避免问题
更新代码:
export class CanvasComponent implements OnInit {
@ViewChild("crfCanvas", { static: true }) crfCanvas: ElementRef;
constructor() { }
ngAfterViewInit() {
let canvas = this.crfCanvas.nativeElement;
let ctx = canvas.getContext("2d");
let img = new Image();
img.src = "/assets/aCRF-PRV111_CLN-001 v1.4-images/aCRF-PRV111_CLN-001 v1.4-blank_0.jpg";
img.onload = () => {
ctx.drawImage(img, 10, 10, 250, 250);
}
}
}
Stackblitz:https ://stackblitz.com/edit/angular-v5tqbn
推荐阅读
- python-3.6 - 如何纠正openpyxl(Python)中的“已删除记录”错误?
- wordpress - 如何在 WooCommerce 中的一处更新所有产品的价格?
- sql - Oracle SQL 逐行更新表
- php - 根据zend中的条件显示选择框
- javascript - __lookupGetter__ VS getOwnPropertyDescriptor 检索一个getter
- angular - 在 ionic 3 中发布,无法发布
- retrofit - 如何使用改造 2 在 Android 中获取 Json,如下面的代码所示?
- .htaccess - .htaccess 使用动态获取参数重定向
- javascript - 使用 REST API(JSON、XML、HTML...)在请求之间传递消息
- ios - 如何更改表格视图中单元格的删除动画持续时间?