div下载为图片

186 阅读1分钟

1、概述

需求

div元素下载为图片

兼容性

pc:ie10、ie11、chrome、firefox;

mobile:android、ios

实现思路

html=>canvas=>base64

2、pc:

第三方插件:polyfill.js(兼容ie)、html2canvas.js

代码:

html2canvas(document.querySelector("#htmlElement")).then(function (canvas) {
                var imgUrl = canvas.toDataURL();               
                图片下载
                // ie
                if (window.navigator.msSaveOrOpenBlob) {
                        var bstr = atob(imgUrl.split(',')[1])
                        var n = bstr.length
                        var u8arr = new Uint8Array(n)
                        while (n--) {
                                u8arr[n] = bstr.charCodeAt(n)
                        }
                        var blob = new Blob([u8arr])
                        window.navigator.msSaveOrOpenBlob(blob, 'kanyang' + '.' + 'png')
                } else {
                        //chrome等浏览器
                        var a = document.createElement('a')
                        a.href = imgUrl
                        a.setAttribute('download', 'kanyangdan')
                        a.click()
                }
            });

3、mobile

第三方插件:previewImage.min.js (显示为大图 利用手机图片长按保存图片)、html2canvas.js

代码:

 html2canvas(document.querySelector("#htmlElement")).then(function (canvas) {
                    var base64 = canvas.toDataURL("image/png");
                    var imgs=[];
                    imgs.push(base64);

                     var obj = {
                            urls: imgs,
                            current: base64
                    };
                    previewImage.start(obj);

                });