html - Angular 2:如何将图像放在循环内的画布上?
问题描述
我正在编写一个由初学者编写的项目,现在我有一周的时间来优化一些缓慢的过程。
背景: 目前,PrimeNg 的选择列表中充满了产品。每个产品都有一个 base64 字符串,该字符串被转换为每个产品显示的图像。 这是选择列表的样子。
问题: 产品太多,转换所有图像并显示某些内容需要花费大量时间。我认为对这么多内容使用 base64 字符串已经是一个坏主意,而且我负担不起大的返工。(我在另一个线程中读到,在画布上绘图可以节省一些工作量)
那么它看起来怎么样呢?
选择产品组件.html:
<p-picklist [source]="products">
<ng-template let-product pTemplate="item">
<img src="{{getImage(product)}}" style="max-width: 100%">
...
选择产品组件.ts:
getImage(product: Product) {
if (product.image != null) {
image.src = 'data:image/jpg;base64,' + product.image;
}
return 'assets/no-image-icon.png';
}
我正在尝试什么 可能可以使用画布代替?我试图把它变成这样的东西:
<p-picklist [source]="products">
<ng-template let-product pTemplate="item">
<canvas class="col-md-2" #myCanvas id='displayImage'></canvas> //Can i pass the product here?
...
选择产品组件.ts:
@ViewChild('myCanvas')
myCanvas: ElementRef<HTMLCanvasElement>;
public context: CanvasRenderingContext2D;
ngAfterViewInit(): void {
this.context = this.myCanvas.nativeElement.getContext('2d');
}
getImage(product: Product) { // How do i pass the product to the canvas element?
if (product.image != null) {
// I don't know
}
return 'assets/no-image-icon.png';
}
谢谢您的帮助
解决方案
推荐阅读
- javascript - Javascript onclick 操作不适用于图像或图标
- firebase - 使用云功能,还是将 Firebase 写入链接在一起?
- python - Python 将 GCS 中的 .json 文件并行读取到 pandas DF 中
- javascript - 如何使用 javascript 和 CANVAS 创建圆角六边形
- javascript - $p['t] 在这个键盘记录器代码中是什么意思?
- php - 在mysql中获取数据并将其存储在数组中然后将其内爆以显示在我的jquery数据表中时如何正确使用for循环?
- html - CSS适用于表'tr'和'td'但如果我包含'th'则失败
- php - 如何从 php mysql 获取嵌套的 pojo 结果
- ocr - TesseractError: (2, 'Usage: pytesseract [-l lang] input_file') 错误
- python - SQL Server 数据库上的 Python SQL 查询运行速度极慢,同时使用 cursor.execute() 和 read_sql