• 最近有需求做图片人脸识别,在系统上传图片后,后台返回坐标将识别到的人脸画上矩形。
  • 效果图如下:


实现过程:

1、利用绘制canvas实例
//html
<canvas id='imgCanvas' ref='imgCanvas'></canvas>
//jsthis.canvas = this.$refs.imgCanvas;this.canvas.height = this.$refs.picContainer.offsetHeight;this.ctx = this.canvas.getContext("2d");
2、将图片绘制到canvas上

注意,我这里canvas的宽高是固定的,图片不进行拉伸,需要让图片自适应

     // 绘制canvas图片drawCanvas(){var image = new Image()image.src = this.bigImg;image.onload = ()=>{this.iw = image.width;this.ih = image.height;var local = this.calculate(this.iw, this.ih);//图片自适应canvasthis.canvas.width = local.pw;this.canvas.height = local.phthis.ctx.drawImage(image,0, 0, local.pw, local.ph); //表示x和y坐标}},// 计算出图片画在canvas中的四个参数,图片自适应canvascalculate(pw, ph) {var w = this.$refs.picContainer1.offsetWidth,//获取元素的宽h = this.$refs.picContainer.offsetHeight,px = 0,py = 0;if(pw < w && ph < h){px = 0.5 * w - 0.5 * pw;py = 0.5 * h - 0.5 * ph;}else if (ph / pw > h / w) {var uu = ph;ph = hpw = pw * h / uupx = 0.5 * w - 0.5 * pw;} else {var uu = pw;pw = w;ph = ph * pw / uupy = 0.5 * h - 0.5 * ph;}return {px, py, pw, ph}},
3、将图片上传后台,将返回的坐标绘制在canvas上。

由于图片是在canv上自适应的,后台返回是图片上的坐标,这里需要转换成canvas的坐标。

// 画矩形drawRect(val){// 绘制矩形var x = this.canvas.width/this.iw,//this.iw图片的宽y = this.canvas.height/this.ih;//this.ih图片的高var top = val.location.top,left = val.location.left,width = val.location.width,height = val.location.height;this.ctx.strokeStyle = "red"; //线的颜色this.ctx.strokeRect(left*x, top*y, width*x, height*y);   //绘制路径矩形// 绘制文字this.ctx.font = "18px bold";this.ctx.fillStyle = "red";this.ctx.textAlign = "center";this.ctx.textBaseline = "middle";this.ctx.fillText(val.name, left*x+18,top*y-18);},

这个canvas使用只用了绘制图片和绘制矩形,许多canvas复杂的动画图形没有应用,比较简单。

vue + canvas绘制背景图、矩形相关推荐

  1. 使用Canvas绘制背景图

    原文  http://www.imququ.com/post/use-canvas-as-background-image.html 最近iCloud Web的Beta版换了UI,整体风格变得和iOS ...

  2. vue3 canvas 星空背景图

    vue3 canvas 星空背景图 页面截图 代码 页面截图 代码 <template><div ref="container" class="cont ...

  3. 利用Canvas绘制雷达图

    雷达图(蜘蛛网图)是一种常见的数据分析图表,本文采用canvas来绘制雷达图,并最终封装成一个小组件.首先来看一下最终的效果图: 如何画正多边形 以正五边形雷达图为例(其他任意正多边形也一样),如下图 ...

  4. HTML5 canvas 设置背景图

    页面代码如下 <!DOCTYPE html> <html><head><meta charset="utf-8"><title ...

  5. vue.js 引用背景图 background 无效的3种解决办法

    #vue.js项目中,出现css调用background背景图无效?如何解决? 或者调用<img>标签,也无效果? 直接上代码,自行对比查找一下: 效果图预览 1. 正确的代码,示例如下: ...

  6. canvas 绘制八卦图

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  7. vue中动态绑定背景图, 图片水平垂直居中

    vue中动态绑定背景图,并且使宽高不等的图片水平垂直居中 外层父元素固定宽高,让图片垂直居中的方法 <div style="width:200px;height:200px;" ...

  8. Canvas绘制八卦图

    运用Canvas绘图编写一个八卦图效果. 最终效果如下: 代码实现如下: <!doctype html> <html lang="en"><head& ...

  9. vue + canvas绘制扇形圆盘

    vue + canvas绘制扇形圆盘 html: <canvas style="position: fixed;z-index:-1" width="545&quo ...

最新文章

  1. ID--HANDLE--HWND三者之间的互相转换
  2. get request uni 参数_uni-app 环境配置,uni.request封装,接口配置,全局配置,接口调用的封装...
  3. [python爬虫] selenium爬取局部动态刷新网站(URL始终固定)
  4. spring的view
  5. Win2003 + SQL 2005 做数据库集群总结(虚拟机)
  6. Diango博客--13.将“视图函数”类转化为“类视图”
  7. 详解Java中的正则表达式
  8. php post获取dvi,如何利用http来发送post请求
  9. Illustrator 教程,如何在 Illustrator 中连接路径?
  10. 上万条流行经典语录大全ACCESS数据库
  11. C语言 Sn=a+aa+aaa+……之值,其中a是一个数字,n表示a的位数,n由键盘输入。
  12. 美国 android手机号码,格式编辑文本为美国电话号码1(xxx)-xxxx你在android中键入?...
  13. 五一培训 清北学堂 DAY3
  14. PLC通过智能网关 MQTT对接阿里云(带CA证书加密),实现物模型数据显示
  15. git clone时报错 Empty reply from server
  16. 小白读《HTML5权威指南》第三部分 CSS
  17. 罕见、二度闯关IPO,发行人因持续经营能力存疑被否
  18. Process Explorer函数调用方式
  19. 中国互联网出行分时租赁市场专题分析2016
  20. 《东周列国志》第七回 公孙阏争车射考叔 公子翚献谄贼隐公

热门文章

  1. Win10系统VS2010中Microsoft MPI v8.1 环境配置
  2. 学生-课程-成绩-教师表的设计
  3. 怎么用ABBYY识别文档里包含的条码
  4. 实验七 ICMP 协议分析实验
  5. 《用户体验要素:以用户为中心的产品设计》读书笔记
  6. 视频行业风云变幻 PPTV半年“功力”猛增
  7. bignumber.js--使用/实例
  8. android ndk 动态库_百度经验,android ndk 动态库
  9. XP SP3 OEM 激活
  10. yate sip 服务端和客服端 搭建