给图片上面添加一个红框,然后返回一张新的图片
全局js方法,返回base64
url:图片路径
rect:四个点 {“bottomX”:779,“bottomY”:555,“topX”:731,“topY”:491
export function buildRect(url,rect) {
return new Promise((resolve) => {
let img = new Image()
img.src = url
img.onload = () => {
let rects = JSON.parse(rect)
let imgWidth = img.width
let imgHeight = img.height
if (!rects.length) {
rects = [rects]
}
var canvas = document.createElement('canvas');
canvas.height = imgHeight
canvas.width = imgWidth
var ctx = canvas.getContext('2d')
ctx.drawImage(img, 0, 0, imgWidth, imgHeight, 0, 0, imgWidth, imgHeight)
rects.forEach(rect => {
ctx.beginPath();
ctx.moveTo(rect.topX, rect.topY);
ctx.lineTo(rect.bottomX, rect.topY);
ctx.lineTo(rect.bottomX, rect.bottomY);
ctx.lineTo(rect.topX, rect.bottomY);
ctx.lineTo(rect.topX, rect.topY);
ctx.strokeStyle = "#ff0000"
ctx.lineWidth = '4'
ctx.stroke();
})
var detailImg = canvas.toDataURL('image/png')
resolve(detailImg)
}
})
}
组件中使用
this.$buildRect(url, alarmsRect).then(res => {
//给对象添加新属性存放图片 返回的res就是新的图片(base64格式)
this.$set(this.alarmsData, "alarmBackgroundPictureBase64", res);
});