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

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


   首先引入三个文件:
        1、<script type="text/javascript" src="js/html2canvas.js"></script>
        2、<script type="text/javascript" src="js/base64.js"></script>
        3、<script type="text/javascript" src="js/canvas2image.js"></script>

<div 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。

更多内容自己去查看canvas API.

来源:看了一篇博客,实验出来的,忘了地址了,哈哈

来源:https://blog.csdn.net/qq_34171965/article/details/84956510

原文地址:https://www.cnblogs.com/datiangou/p/10125360.html

时间: 2024-12-25 03:00:43

利用canvas将网页元素生成图片并保存在本地的相关文章

Python3.4 获取百度网页源码并保存在本地文件中

最近学习python 版本 3.4 抓取网页源码并且保存在本地文件中 import urllib.request url='http://www.baidu.com' #上面的url一定要写明确,如果写成www.baidu.com,下一步就会报错. response=urllib.request.urlopen(url) #下一步获取html,但是是Byte格式的,我们要解码 html=response.read() html_str=html.decode('utf-8') #下面我们把get

canvas生成图片并保存到本地文件夹主要代码

js var url = canvas.toDataURL();//把canvas中的图片变成data:image C# string filepath = ""; string imgData = Request["url"].ToString(); var date = DateTime.Now.ToString("yyyyMMddmsms"); if (imgData.StartsWith("data:image/png;base

Chrome浏览器无法将网页中的图片保存到本地的问题

今天在浏览网页时看到一张图片不错,想保存下来,在图片上点击右键>图片另存为,结果试了好多次都没有反应. 环境: Windows 7操作系统 Chrome 版本 41.0.2272.76 m (64-bit) 原因: 后来发现是这个安全警告框的原因,点击运行以后一下子弹出好多个文件保存对话框,之前试了好多次都没有反应,现在全都弹出来了.

html生成图片并保存到本地方法(Windows)

// 最近用到一个保存html为图片到本地的功能(保存到下载目录),记之,该功能IE使用Blob 存储数据,关于兼容性问题参见如下表格,其他浏览器使用a标签download属性新功能下载 Browser Constructs as Filenames Max Blob Size Dependencies Firefox 20+ Blob Yes 800 MiB None Firefox < 20 data: URI No n/a Blob.js Chrome Blob Yes 500 MiB N

js 利用canvas + flv.js实现 视频流 截屏 、本地下载功能实现,兼容火狐,谷歌, 截屏跨域的坑

1 本地视频截屏(canvsa) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title></title> <link rel="stylesheet" href=&q

vue使用html2canvas生成图片并保存到本地

1.添加html2canvas插件 2.在script下引用插件 import html2canvas from 'html2canvas'; 3.使用方法调用 <!--二维码HTML--> <el-dialog title="二维码" :visible.sync="qrCodeDialogVisible" width="340px"> <div slot="footer" class="

PHP 利用PHPExcel 文件导入(也可保存到本地或者服务器)、导出

首先需要去官网http://www.php.cn/xiazai/leiku/1491,下载后只需要Classes目录下的文件即可. 1.PHPExcel导出方法实现过程 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58

如何获取网页验证码图片并保存到本地(Java实现) [问题点数:40分,结帖人lanxuezaipiao]

http://bbs.csdn.net/topics/390426978 public static String readCheckImage(HashMap<String, String> requestMap) {        String url = requestMap.get("url");        if (requestMap.get("params") != null) {            url += "?&qu

抓取网页链接,并保存到本地

import urllib2 import urllib content=urllib2.urlopen("http://www.cnblogs.com/sayary/archive/2013/03/11/2952638.html").read() ##print content ##<a title="发布于2013-03-10 13:53" ##href="http://www.cnblogs.com/sayary/archive/2013/03