html2canvas.js网页截图功能

需求:将网页生成图片,用户自行长按图片进行保存图片,再分享朋友圈。其中,都可识别图中的二维码。(二维码过小会识别不出)

首先,先来科普一下微信网页识别二维码原理:截屏识别,当客户端发现用户在网页的img标签内进行长按操作时,会立刻截屏并且启动二维码识别算法。https://www.cnblogs.com/daipi...

发现官网中的html2canvas.js插件存在一些bug:


1.截图不全,不完整
    解决方案:
    //修改源码,添加自定设置高度宽度

var width = options.width != null ? options.width : node.ownerDocument.defaultView.innerWidth;


var height = options.height != null ? options.height : node.ownerDocument.defaultView.innerHeight;
return renderDocument(node.ownerDocument, options, width, height, index).then(function (canvas) {**

    if (typeof(options.onrendered) === "function") {
        log("options.onrendered is deprecated, html2canvas returns a Promise containing the canvas");
        options.onrendered(canvas);
    }
    return canvas;
});

 2.图片像素模糊:
 解决方案:添加dpi参数

 function CanvasRenderer(width, height) {
                Renderer.apply(this, arguments);
                this.canvas = this.options.canvas || this.document.createElement("canvas");
                if (!this.options.canvas) {
                    if (this.options.dpi) {
                        this.options.scale = this.options.dpi / 96
                    }
                    this.canvas.width = width;
                    this.canvas.height = height
                }
                this.ctx = this.canvas.getContext("2d");
                this.taintCtx = this.document.createElement("canvas").getContext("2d");
                this.ctx.textBaseline = "bottom";
                this.variables = {};
                log("Initialized CanvasRenderer with size", width, "x", height)
  }
  

最后写写html2canvas的使用方法:


 var height = $('.teacher_page').scrollTop() + $('.teacher_page').outerHeight(true);
     html2canvas($(".teacher_page"),{
         height:height,
        // window.devicePixelRatio是设备像素比
         dpi: 192,//放大像素(2倍),以免图片模糊
     }).then(function(canvas) {
         var imgUri = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
         $('.popBody').html('<img alt="二维码" src="'+imgUri+'" id="canvas"/>');
    });

官网:http://html2canvas.hertzen.com/
下载地址:https://www.bootcdn.cn/html2c...

原文地址:https://segmentfault.com/a/1190000016876592

原文地址:https://www.cnblogs.com/lalalagq/p/9901446.html

时间: 2024-10-29 10:45:44

html2canvas.js网页截图功能的相关文章

C#实现网页截图功能

网页截图是很常见的实用功能,今天就为大家共享一个实现浏览器截图的代码,主要程序代码如下所示: private void Form_Load(object sender, EventArgs e) { //接收web url string colle = string.Empty; string url = string.Empty; //获取进程调用传入的命令 string[] args = Environment.GetCommandLineArgs(); string[] args = ne

Js实现截图功能

今日想试下弄个截图功能,在网上找了些资料,终于把它实现了,步骤如下: 首先要准备4个js文件: 1)prototype.js var Class = { create: function() { return function() { this.initialize.apply(this, arguments); } }} var Extend = function(destination, source) { for (var property in source) { destination

JS 使用 html2canvas 实现页面截图功能

html2canvas的官方文档地址:http://html2canvas.hertzen.com/ 实现原理:将需要截图的页面在canvas中进行重绘,这样将页面转换成图片的过程. 注意事项: 不支持iframe 不支持跨域图片 不支持flash 不支持transform.transition过渡.animation动画(备注:transform初始布局是可以的,但是不能参与动画类的操作) html代码实现 <div id="capture" style="paddi

html2canvas根据DOM元素样式实现网页截图

html2canvas根据DOM元素样式实现网页截图 html2canvas是一个相当不错的JavaScript类库,它使用了html5和css3的一些新功能特性,实现了在客户端对网页进行截图的功能.html2canvas通过获取页面的DOM和元素的样式信息,并将其渲染成canvas图片,从而实现给页面截图的功能. 它不需要来自服务器任何渲染,整张图片都是在客户端浏览器创建.当浏览器不支持Canvas时,将采用Flashcanvas或ExplorerCanvas技术代替实现.以下浏览器能够很好的

js实现网页收藏功能,动态添加删除网址

<html> <head> <title> 动态添加删除网址 </title> <meta charset="utf-8"> <script> function add(){ var name = document.getElementById("name").value; var url = document.getElementById("url").value; var

IText&amp;Html2canvas js截图 绘制 导出PDF

Html2canvas JS截图 HTML 1 <div id="divPDF"> 2 需要截图的区域 3 </div> JS 1 <script src="../Js/html2canvas.js"></script> 2 <script type="text/javascript"> 3 4 function getPDF() { 5 html2canvas($('#divPDF')

使用html2canvas js 截取网页图片下载

1.前台使用html2canvas js 截取Div元素转存为图片,下载.效果: 2.前台代码 <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    <title></title>    <meta charset="utf-8"

基于html2canvas实现网页保存为图片及图片清晰度优化

本次技术调研来源于H5项目中的一个重要功能需求:实现微信长按网页保存为截图. 这里有个栗子(请用微信打开,长按图片即可保存):3分钟探索你的知识边界 将整个网页保存为图片是一个十分有趣的功能,常见于H5活动页的结尾页分享.以下则是项目中调研和踩坑的一些小结和汇总. 一.实现HTML页面保存为图片 1.1 已知可行方案 现有已知能够实现网页保存为图片的方案包括: 方案1:将DOM改写为canvas,然后利用canvas的toDataURL方法实现将DOM输出为包含图片展示的data URI 方案2

canvas与html5实现视频截图功能

这段时间一直在研究canvas,突发奇想想做一个可以截屏视频的功能,然后把图片拉去做表情包,哈哈哈哈哈哈~~ 制作方法: 1.在页面中加载视频 在使用canvas制作这个截图功能时,首先必须保证页面上已经加载完成了这个视频,这样才能够方便的对其操作.如果使用下面直接嵌入<video>标签的方式: 1 2 3 4 5 <video loop controls id="testmp4" width="500" height="400"