利用canvas将网页元素生成图片并保存在本地

时间: 2018-12-12阅读: 1064标签: canvas

利用canvas将网页元素生成图片并保存在本地,首先引入三个文件:

<script type="text/JavaScript" src="js/html2canvas.js"></script>
<script type="text/JavaScript" src="js/base64.js"></script>
<script type="text/javascript" src="js/canvas2image.js"></script>
<div id="view" style="background-color: red; width: 700px; height: 500px;">
//canvas截图为document.body上的元素
html2canvas(document.body).then(function (canvas) { 
canvas.setAttribute('id','canvasImg'); //给canvas添加id
// document.body.appendChild(canvas)
document.getElementById('images').appendChild(canvas) //添加canvas图给元素
});
let Download=document.getElementById('Download');
Download.onclick=function () { //给下载节点绑定事件
let oCanvas=document.getElementById('canvasImg'); //获取canvas的id
console.log(oCanvas)
// 将canvas图片通过Canvas2Image转成的img元素引入的图片
let img=Canvas2Image.saveAsJPEG(oCanvas,true).getAttribute('src');
console.log(img);
saveFile(img,'hlr.png') //调用下载函数,传Canvas2Image图片地址,下载时保存的图片的名称
};

注:createElementNS() 方法可创建带有指定命名空间的元素节点。 createElementNS(ns,name) > createElementNS() 方法与 createElement() 方法相似,只是它创建的 Element > 节点除了具有指定的名称外, > 还具有指定的命名空间。只有使用命名空间的 XML 文档才会使用该方法。

let saveFile=function (data,filename) {
let save_link=document.createElementNS('http://www.w3.org/1999/xhtml','a'); //img表示生成img元素或a元素或则可以放图片地址的元素

save_link.href=data; //img 元素中图片引入用src,a元素中图片的引入用href等等
save_link.download=filename; // 下载的名称
var event = document.createEvent('MouseEvents');//创建event事件
console.log(event);
//initMouseEvent 方法用于初始化通过 DocumentEvent 接口创建的 MouseEvent 的值, 详见下文:
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
save_link.dispatchEvent(event);

console.log(save_link)// <a href=data:image/jpeg:base64.....></a>

initMouseEvent 方法用于初始化通过 DocumentEvent 接口创建的 MouseEvent 的值。 此方法只能在通过 dispatchEvent 方法指派 MouseEvent 之前调用,尽管在该阶段可以多次调用它(如有必要)。如果被多次调用,则最后一次调用优先。


其他指定事件方法:

typeArg - 指定事件类型。
canBubbleArg - 指定该事件是否可以 bubble。
cancelableArg - 指定是否可以阻止事件的默认操作
viewArg - 指定 Event 的 AbstractView。
detailArg - 指定 Event 的鼠标单击量。
screenXArg - 指定 Event 的屏幕 x 坐标
screenYArg - 指定 Event 的屏幕 y 坐标
clientXArg - 指定 Event 的客户机 x 坐标
clientYArg - 指定 Event 的客户机 y 坐标
ctrlKeyArg - 指定是否在 Event 期间按下 control 键
altKeyArg - 指定是否在 Event 期间按下 alt 键。
shiftKeyArg - 指定是否在 Event 期间按下 shift 键。
metaKeyArg - 指定是否在 Event 期间按下 meta 键。
buttonArg - 指定 Event 的鼠标按键。
relatedTargetArg - 指定 Event 的相关 EventTarget。


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/1559

关闭

利用canvas实现环形进度条

有时候在项目中会有用到进度条的情况,使用css3也可以实现,但是对于性能不好的设备,或者网络不好的情况下,卡顿现象非常明显,避免出现不流畅的尴尬情况,所以记录一下,使用canvas来实现的方法。

Vue用Canvas生成二维码合成海报并解决清晰度问题

用文字和图片合成一个海报,用于活动结尾页在微信长按分享,接到需求的第一时间,我就想到用 canvas 来画,但是看到 canvas 繁琐的绘制过程,此篇文章主要记录下实现过程,以及遇到的问题。

我从 fabric.js 中学到了什么

熟悉 canvas 的朋友想必都使用或者听说过 Fabric.js,Fabric 算是一个元老级的 canvas 库了,从第一个版本发布到现在,已经有 8 年时间了。我近一年时间也在项目中使用,作为用户简单说说感受:

如何在Canvas中添加事件?

作为一个前端,给元素添加事件是一件司空见惯的事情。可是在Canvas中,其所画的任何东西都是无法获取的,更别说添加事件,那么我们对其就束手无策了吗?

谈谈图片上传及canvas压缩的流程

我们通常在做图片上传的时候都会遇上这样的情况,一是后端接口限制上传图片的大小,或者是即使后端没有限制大小,因为图片太大在前端渲染时太慢,造成页面加载体验较差。因此我们很有必要对上传的图片进行压缩。

HTML5 如何创建Canvas画布

<canvas> 标签是 HTML5 中新增的标签,通过使用 JavaScript 中的脚本来绘制图形。在页面上放置一个 canvas 元素,就相当于在页面上放置了一块画布,canvas 元素拥有多种绘制矩形、圆形、字符

canvas高效绘制10万图形,你必须知道的高效绘制技巧

最近的一个客户项目中,简化的需求是绘制按照行列绘制很多个圆圈。需求看起来不难,上手就可以做,写两个for循环。,IT行业的知识更新越来越快,能够以不变应万变的人,就是拥有良好的学习力、创造力、判断力和思考力的人。这些能力会让你在变换万千的技术海洋中,屹立不倒,不被淹没。

离屏Canvas — 使用Web Worker提高你的Canvas运行速度

现在因为有了离屏Canvas,你可以不用在你的主线程中绘制图像了!Canvas 是一个非常受欢迎的表现方式,同时也是WebGL的入口。它能绘制图形,图片,展示动画,甚至是处理视频内容

有趣的Canvas

Canvas 是 HTML5 提供的一个用于展示绘图效果的标签. Canvas 原意为画布, 在 HTML 页面中用于展示绘图效果. 最早 Canvas 是苹果提出的一个方案, 今天已经在大多数浏览器中实现。

Canvas接口和动画效果大全

<canvas>元素用于生成图像。它本身就像一个画布,JavaScript 通过操作它的 API,在上面生成图像。它的底层是一个个像素,基本上<canvas>是一个可以用 JavaScript 操作的位图(bitmap)

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!