html2canvas把div保存图片高清图的方法示例


Posted in HTML / CSS onMarch 05, 2018

本文介绍了html2canvas把div保存图片高清图的方法示例,分享给大家,具体如下:

http://www.bootcdn.cn/(可以搜索html2canvans)

1.选择html2canvas版本(这个版本可以放大倍数保证图片清晰)

默认生成的 canvas 图片在 retina 设备上显示很模糊,处理成 2 倍图能解决这个问题:

var w = $("#code").width();
var h = $("#code").height();

//要将 canvas 的宽高设置成容器宽高的 2 倍
var canvas = document.createElement("canvas");
canvas.width = w * 2;
canvas.height = h * 2;
canvas.style.width = w + "px";
canvas.style.height = h + "px";
var context = canvas.getContext("2d");
//然后将画布缩放,将图像放大两倍画到画布上
context.scale(2,2);

html2canvas(document.querySelector("#code"), {
    canvas: canvas,
    onrendered: function(canvas) {
        ...
    }
});

下载方法:

.on('click','.download',function(){
                $('#mycanvas').remove();
                var _height=$('.skinReport').height();
                //滚到顶部
                $('html, body').animate({scrollTop:0});

                if(confirm('是否下载肌肤检测报告?'))
                {

                    setTimeout(function(){
                        var canvas = document.createElement("canvas"),
                            w=$('#skinReport').width(),
                            h=$('#skinReport').height();
                        canvas.width = w * 2;
                        canvas.height = h * 2;
                        canvas.style.width = w + "px";
                        canvas.style.height = h + "px";
                        var context = canvas.getContext("2d");
//然后将画布缩放,将图像放大两倍画到画布上
                        context.scale(2,2);
                        html2canvas(document.getElementById('skinReport'), {
                            allowTaint: false,
                            taintTest: true,
                            canvas: canvas,
                            onrendered: function(canvas) {
                                canvas.id = "mycanvas";
                                canvas.style.display = 'none';
                                document.body.appendChild(canvas);
                                //生成base64图片数据

                                imgData = canvas.toDataURL(type);
                                //var newImg = document.createElement("img");
                                //newImg.src =  dataUrl;
                                //document.body.appendChild(newImg);
                                //console.log(imgData);

                                var _fixType = function(type) {
                                    type = type.toLowerCase().replace(/jpg/i, 'jpeg');
                                    var r = type.match(/png|jpeg|bmp|gif/)[0];
                                    return 'image/' + r;
                                };
                                // 加工image data,替换mime type
                                imgData = imgData.replace(_fixType(type),'image/octet-stream');
                                /**
                                 * 在本地进行文件保存
                                 * @param  {String} data     要保存到本地的图片数据
                                 * @param  {String} filename 文件名
                                 */
                                var saveFile = function(data, filename){
                                    var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
                                    save_link.href = data;
                                    save_link.download = filename;

                                    var event = document.createEvent('MouseEvents');
                                    event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                                    save_link.dispatchEvent(event);
                                };

                                // 下载后的问题名
                                var filename = aname+'肌肤检测报告' + (new Date()).getTime() + '.' + type;
                                // download
                                saveFile(imgData,filename);
                            },
                            width:1512,
                            height:15000
                        })
                    },2500)
                }
                else
                {
                    return;
                }

            })

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
CSS3中使用RGBa来调节透明度的教程
May 09 HTML / CSS
CSS3之2D与3D变换的实现方法
Jan 28 HTML / CSS
html5 canvas绘制矩形和圆形的实例代码
Jun 16 HTML / CSS
【HTML5】3D模型--百行代码实现旋转立体魔方实例
Dec 16 HTML / CSS
解决html5中video标签无法播放mp4问题的办法
May 07 HTML / CSS
手机端用rem+scss做适配的详解
Nov 15 HTML / CSS
html5自定义video标签的海报与播放按钮功能
Dec 04 HTML / CSS
HTML5拖放API实现自动生成相框功能
Apr 07 HTML / CSS
原生canvas制作画图小工具的踩坑和爬坑
Jun 09 HTML / CSS
html5表单的required属性使用
Jul 07 HTML / CSS
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
Aug 23 HTML / CSS
企业开发CSS命名BEM代码规范实践
Feb 12 HTML / CSS
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
Mar 02 #HTML / CSS
基于MUI框架使用HTML5实现的二维码扫描功能
Mar 01 #HTML / CSS
canvas裁剪clip()函数的具体使用
Mar 01 #HTML / CSS
html5.2 dialog简介详解
Feb 27 #HTML / CSS
Html5页面中的返回实现的方法
Feb 26 #HTML / CSS
简述Html5 IphoneX 适配方法
Feb 08 #HTML / CSS
canvas实现按住鼠标移动绘制出轨迹的示例代码
Feb 05 #HTML / CSS
You might like
德生PL550的电路分析
2021/03/02 无线电
PHP中路径问题的解决方案
2006/10/09 PHP
截获网站title标签之家内容的例子
2006/10/09 PHP
PHP 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
php下保存远程图片到本地的办法
2010/08/08 PHP
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
PHP答题类应用接口实例
2015/02/09 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
Javascript中的isNaN函数使用说明
2011/11/10 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
Web Uploader文件上传插件使用详解
2016/05/10 Javascript
jQuery插件uploadify实现ajax效果的图片上传
2016/06/18 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
一篇文章,教你学会Vue CLI 插件开发
2019/04/17 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
一篇超完整的Vue新手入门指导教程
2020/11/18 Vue.js
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
[01:30]我们共输赢 完美世界城市挑战赛开启全新赛季
2019/04/19 DOTA
Python中使用装饰器和元编程实现结构体类实例
2015/01/28 Python
keras 多gpu并行运行案例
2020/06/10 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
印尼购物网站:iLOTTE
2019/10/16 全球购物
上海奥佳笔试题面试题
2016/11/16 面试题
人事主管岗位职责范本
2013/12/04 职场文书
名人演讲稿范文
2013/12/28 职场文书
简短证婚人证婚词
2014/01/09 职场文书
门诊手术室工作制度
2014/01/30 职场文书
委托书格式要求
2015/01/28 职场文书
2015年宣传工作总结
2015/04/08 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
 Python 中 logging 模块使用详情
2022/03/03 Python