中化加油站项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

73 lines
2.0 KiB

import { Component, Input, OnInit } from "@angular/core";
@Component({
selector: "app-img-look",
templateUrl: "./img-look.component.html",
styleUrls: ["./img-look.component.scss"],
})
export class ImgLookComponent implements OnInit {
@Input() data: any;
constructor() {}
imgUrl;
ngOnInit(): void {
console.log(this.data);
this.imgUrl = this.data.itemData.ViolateImage;
let dataArr = [];
for (const key in JSON.parse(this.data.itemData.ViolatedItemSnapshot)) {
const element = JSON.parse(this.data.itemData.ViolatedItemSnapshot)[key];
if (element.error) {
dataArr.push(element);
}
}
console.log("标绘坐标", dataArr);
this.coordinate = dataArr;
setTimeout(() => {
this.canvasLabel();
}, 0);
}
canvasWidth = 0;
canvasHeight = 0;
ctx;
coordinate;
canvasLabel() {
let imgBg: any = document.getElementById("img2");
imgBg.onload = () => {
this.canvasWidth = imgBg.offsetWidth;
this.canvasHeight = imgBg.offsetHeight;
const img = new Image();
img.src = imgBg.src;
img.onload = () => {
const canvas: any = document.querySelector("#canvas2");
this.ctx = canvas.getContext("2d");
const cWidth = canvas.width,
cHeight = canvas.height;
// 以图画底
this.ctx.drawImage(img, 0, 0, cWidth, cHeight);
this.strokeRect(this.coordinate);
};
};
}
strokeRect(data) {
data.forEach((item) => {
let startPoint = [
Math.round(this.canvasWidth * item.box[0]),
Math.round(this.canvasHeight * item.box[1]),
];
let endPoint = [
Math.round(this.canvasWidth * item.box[2]),
Math.round(this.canvasHeight * item.box[3]),
];
this.ctx.strokeStyle = "red";
this.ctx.lineWidth = 3;
this.ctx.strokeRect(
startPoint[0],
startPoint[1],
endPoint[0] - startPoint[0],
endPoint[1] - startPoint[1]
);
});
}
}