• app内区域截图利用html2Canvals保存到手机 截屏 (html2Canvas使用版本是:0.5.0-beta3。)


    app内区域截图利用html2Canvals保存到手机

    app内有时候需要区域内的截图保存dom为图像,我们可以使用html2Canvas将dom转换成base64图像字符串,然后再利用5+api保存至app
    ,通用代码如下:

    function saveDomImage (html2Canvas, dom, fileName) {  //使用之前要引入 html2Canvas.js
            if(mui.os.plus){
                if (typeof html2Canvas == null)
                    throw Error("html2Canvas is not defined");
                if (dom == null)
                    throw Error("saveDomImage param : dom is null");
                if (fileName == null || fileName == "")
                    fileName = "untitled.png";
    
                var getPixelRatio = function(context) {
                    var backingStore = context.backingStorePixelRatio ||
                        context.webkitBackingStorePixelRatio || 1;
                    return (window.devicePixelRatio || 1) / backingStore;
                };
    
                var _canvas = document.createElement('canvas');
    
                var ctx = _canvas.getContext('2d');
                var ratio = getPixelRatio(ctx);
                ctx.scale(ratio,ratio);
    
                var w = dom.offsetWidth;
                var h = dom.offsetHeight;
    
                _canvas.width = w;
                _canvas.height = h;
                _canvas.style.width = w * ratio + 'px';
                _canvas.style.height = h * ratio + "px";
    
                html2Canvas(dom, {
                    allowTaint:true,
                    logging: false,
                    profile: true,
                    useCROS: true,
                    canvas : _canvas,
                    onrendered: function (canvas) {
                        var dataUrl = canvas.toDataURL();
                        var b = new plus.nativeObj.Bitmap('bitblmap');
    
                        b.loadBase64Data(dataUrl, function () {
                            /*这里一定要是_doc目录*/
                            b.save("_doc/" + fileName, {overwrite: true}, function (object) {
                                //保存到相册
                                plus.gallery.save("_doc/" + fileName, function () {
                                    mui.toast("图片已保存到相册");
                                }, function () {
                                    mui.toast("图片保存失败");
                                });
                            }, function () {
                                mui.toast("图片保存失败");
                            });
                        }, function () {
                            mui.toast("图片保存失败");
                        });
                    }
                });
            }
        }

    至于为什么要是_doc目录,本人未查实原因,hbuilder测试包可以用 _www ,但是打出来的正式包只能用 _doc。
    有好心人知晓请告诉本人。

    这里html2Canvas使用版本是:0.5.0-beta3。(用最新版本截屏出来的图像不模糊)

    说明:
    1 ,dom元素最好是文档流定位的,用absolute 和 fixed 截取出来的有偏移, 如果想解决这个问题,可以把这个dom复制到新的无偏移(top:0 ;left:0)的dom里面,再对新dom执行保存操作。
    2,保存的图片肯定是没有原图清晰的,勉强也能接受,如果图上有二维码识别, 尽量把二维码做的识别度高点。
    3,本功能适合保存dom合成的图片。屏幕全截屏,保存远端img图片,mui提供更简单的方式, 请参考其他文档。

    html2Canvas: http://html2canvas.hertzen.com

  • 相关阅读:
    mysql 内联接、左联接、右联接、完全联接、交叉联接 区别
    JS 时间字符串与时间戳之间的转换
    MySQL性能优化的最佳20条经验
    ++i 与 i++ 的区别
    === 与 == 区别
    SC命令创建和删除windows服务
    杂记
    linux 文件编程
    u-boot 启动过程
    简单冒泡法
  • 原文地址:https://www.cnblogs.com/duanzb/p/9634028.html
Copyright © 2020-2023  润新知