1、 前言

图片储存在后台中,根据图片的地址,在vue页面中,查看图片,并根据坐标标注指定区域。

由于浏览器的机制,使用window.location.href下载图片时,并不会保存到本地,会在浏览器打开。

2、 实现原理

2.1、 绘制画布

//为了突出画布效果可以在css中设置一个边框。

#mycanvas {

border: 1px solid rgb(199, 198, 198);

}

这里为了交互体验,使用了element-ui的弹窗方式。将canvas画布放到了弹窗中。

2.2 绘制图片

// imageUrl为后台提供图片地址

doDraw(imageUrl){

// 获取canvas

var canvas = document.getElementById("mycanvas")

// 由于弹窗,确保已获取到

var a = setInterval(() =>{

// 重复获取

canvas = document.getElementById("mycanvas")

if(!canvas){

return false

} else {

clearInterval(a)

// 可以理解为一个画笔,可画路径、矩形、文字、图像

var context = canvas.getContext('2d')

var img = new Image()

img.src = imageUrl

// 加载图片

img.onload = function(){

if(img.complete){

// 根据图像重新设定了canvas的长宽

canvas.setAttribute("width",img.width)

canvas.setAttribute("height",img.height)

// 绘制图片

context.drawImage(img,0,0,img.width,img.height)

}

}

}

},1)

},

context.drawImage()方法的参数介绍,可参照 W3school

2.3 、绘制矩形

context.strokeStyle = "red"

context.lineWidth = 3;

context.strokeRect(x, y, width, height)

context 同上面的定义

strokeStyle 矩形颜色

lineWidth 矩形边框宽度

x,y,width,height 矩形位置加长宽

2.4 、绘制线条

context.moveTo(x1,y1)

context.lineTo(x2,y2)

context.strokeStyle = "red"

context.lineWidth = 3;

context.stroke()

(x1,y1) (x2,y2) 线条的起点和终点坐标

strokeStyle lineWidth 线条的样式

2.5 、绘制文字

context.font = "26px Arial bolder"

context.fillStyle = 'red'

context.fillText(text,x,y)

font fillStyle 文字样式

text 文字内容

x,y 文字显示坐标.

2.6 、下载图片

// 图片地址和图片名称

downIamge (imgsrc, name) {

let image = new Image()

image.setAttribute('crossOrigin', 'anonymous')

image.onload = function () {

let canvas = document.createElement('canvas')

canvas.width = image.width

canvas.height = image.height

let context = canvas.getContext('2d')

context.drawImage(image, 0, 0, image.width, image.height)

let url = canvas.toDataURL('image/jpg')

let a = document.createElement('a')

let event = new MouseEvent('click')

a.download = name

a.href = url

a.dispatchEvent(event)

}

image.src = imgsrc

},

vue页面绘图_Vue+Canvas绘图使用相关推荐

  1. html5 2d绘图,HTML5 canvas绘图

    简介 HTML5新增了canvas元素,我们可以利用canvas绘制各种图形文本图表等,熟悉使用canvas还可以写出各种多彩的特效. 只是声明一张画布,本身并没有绘图能力,我们需要利用JS来实现绘图 ...

  2. Android中Canvas绘图基础详解(附源码下载)

    看到了一篇比较详细的Canvas文章,转过来方便自己查看. 源地址:http://blog.csdn.net/iispring/article/details/49770651 Android中,如果 ...

  3. 如何使用canvas绘图

    这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [如何使用can ...

  4. H5 canvas 绘图

    H5的canvas绘图技术 canvas元素是HTML5中新添加的一个元素,该元素是HTML5中的一个亮点.Canvas元素就像一块画布,通过该元素自带的API结合JavaScript代码可以绘制各种 ...

  5. Canvas绘图在微信小程序中的应用:生成个性化海报

    Canvas绘图在微信小程序中的应用:生成个性化海报 如极客时间的一些实现案例: 基础语法 Canvas本质是一个可以使用脚本(通常为JavaScript)来绘制图形的 HTML 元素,默认大小为30 ...

  6. 微信小程序 使用canvas绘图

    微信小程序的绘图是使用canvas,canvas的使用和普通的h5的canvas使用一样,没有什么区别 想使用canvas,首先是要在页面是创建canvas标签,如果只是想要获得图片,可以把canva ...

  7. 微信小程序使用canvas绘图

    微信小程序的绘图是使用canvas,canvas的使用和普通的h5的canvas使用一样,没有什么区别 想使用canvas,首先是要在页面是创建canvas标签,如果只是想要获得图片,可以把canva ...

  8. HTML5 学习总结(四)——canvas绘图、WebGL、SVG

    目录 一.Canvas 1.1.创建canvas元素 1.2.画线 1.3.绘制矩形 1.4.绘制圆弧 1.5.绘制图像 1.6.绘制文字 1.7.随机颜色与简单动画 二.WebGL 2.1.HTML ...

  9. canvas绘图工具

    关于canvas绘图,在html页面上太方便了.为什么不用SVG呢?SVG大量的操作DOM元素你会发现网页的内存一下就达到几个G非常恐怖,更别说应用到移动端了.百度取了不少经,什么画板涂鸦只是小把戏缺 ...

最新文章

  1. 【推荐】iOS汉字转拼音第三方库
  2. ?? 运算符 和三元运算符
  3. JavaScript实现eulerianPath欧拉路径算法(附完整源码)
  4. 从特斯拉到计算机视觉之「图像语义分割」
  5. django连接redis 集群(安装redis的相关包的时候亲测)
  6. LeetCode 70. 爬楼梯(动态规划)
  7. java明文发送_使用java MD5加密网络明文
  8. MATLAB LFCM雷达调频法测距
  9. ASP.NET验证控件详解
  10. APP测试——经典面试题分享
  11. 软件工程与计算-11-人机交互设计
  12. echarts 的柱状图 填充色为透明
  13. 核心数据库保护安全技术实践
  14. 苹果为小学生推出编程指南
  15. 今天开通了CNSD博客
  16. 计算机初学者的干货(写的非常好本人推荐)
  17. 代码整洁之道札记:代码为什么要整洁
  18. Learning to Compare: Relation Network 源码调试
  19. Matlab数学形态学运算
  20. 边缘计算落地要多牵住几个“牛鼻子”

热门文章

  1. 利用 AttachThreadInput 改变其它进程的输入法状态
  2. 全国城市中心点(全)
  3. LiveData的postValue丢值?setValue也丢值?
  4. Java毕业设计-停车位管理系统
  5. Web前端之iframe详解
  6. 对象序列化的 两种种方式(实现Serializable接口和实现Externalizable接口)
  7. C#对象序列化、反序列化、保存、读取、对象直接保存、读取
  8. 前端页面JS埋点自定义采集实现
  9. notepad++ 匹配正则表达式数字替换
  10. php fsockopen http,fsockopen与HTTP 1.1/HTTP 1.0