zoukankan      html  css  js  c++  java
  • 使用mui实现长按保存图片

    转自:https://blog.csdn.net/qq_36676237/article/details/81533124

    首先初始化mui(longtap是我们要用到的,longtap默认为false,如果没有初始化为true,则长按事件无效)

         mui.init( { gestureConfig:{
                    tap: true, //默认为true
                    doubletap: true, //默认为false
                    longtap: true, //默认为false
                    swipe: true, //默认为true
                    drag: true, //默认为true
                    hold:true,//默认为false,不监听
                    release:false//默认为false,不监听
                }});

        //给需要长按保存图片的img标签设置 class='saveImg'
         var divs = document.getElementsByClassName('saveImg');
            for(var i = 0;i<divs.length;i++){
              divs[i].addEventListener('longtap', function () {
                //开启弹框
                  mui('#picture').popover('toggle');
                  var imgurl = this.src;
                  document.getElementById('saveImg').addEventListener('tap', function () {
                    var imgDtask = plus.downloader.createDownload(imgurl,{method:'GET'}, function (d,status) {
                            if(status == 200){
                                plus.gallery.save(d.filename, function () {//保存到相册
                                    plus.io.resolveLocalFileSystemURL(d.filename, function (enpty) {
                                    // 关闭弹框
                                        mui('#picture').popover('toggle');
                                        mui.toast('保存成功')
                                    });
         
                                })
                            }else{
                                mui.toast('保存失败')
                            }
                      });
                    imgDtask.start();
                  });
           
              })
            }

        <-- 弹框的html-->
        <div id="picture" class="mui-popover mui-popover-action mui-popover-bottom" style="z-index: 99999999">
                    <ul class="mui-table-view">
                        <li class="mui-table-view-cell">
                            <a href="javascript:;" id="saveImg">保存图片</a>
                        </li>
                    </ul>
                    <ul class="mui-table-view">
                        <li class="mui-table-view-cell">
                            <a href="#picture"><b>取消</b></a>
                        </li>
                    </ul>
                </div>

    ps:要引入mui的js和css

    另一种方法:

    <script type="text/javascript">
        mui.init({
            gestureConfig: {
                longtap: true
            }
        });
    
    
    
        mui.plusReady(function() {
            document.addEventListener('longtap', function(e) {
                var target = e.target;
                savePic(target);
            });
        });
    
        /**
         * 长按保存图片
         * 1. 获取图片链接
         * 2. 创建下载并下载图片
         * 3. 保存至相册
         */
        function savePic(target) {
            if(target.tagName == 'IMG' && target.currentSrc.length > 0 ) { //确保图片链接不为空
                var imgUrl = target.src;
    
                var suffix = cutImageSuffix(imgUrl);
    
                mui.confirm("是否保存此图片", "", ["保存", "取消"], function(event) {
                    var index = event.index;
                    if(index == 0) {
                        var timestamp = (new Date()).valueOf();
                        var downLoader = plus.downloader.createDownload(imgUrl, {
                            method: 'GET',
                            filename: '_downloads/image/' + timestamp+'.png'
                        }, function(download, status) {
                            var fileName = download.filename;
                            /**
                             * 保存至本地相册
                             */
                            plus.gallery.save(fileName, function() {
                                mui.toast("保存成功" );
    
                            });
                        });
                        /**
                         * 开始下载任务
                         */
                        downLoader.start();
                    }
                });
            }
        }
        // 截取图片后缀用于重命名图片,防止%E5%85%89%E6%98%8E%E8%A1%8C编码的文件不被系统相册识别;
        function cutImageSuffix(imageUrl) {
            var index = imageUrl.lastIndexOf('.');
            return imageUrl.substring(index);
        }
    </script>
  • 相关阅读:
    XML(学习笔记)
    css样式学习笔记
    Request(对象)
    sql一些错误修改的总结
    转载(如何学习C#)
    sql server(学习笔记2 W3Cschool)
    sql sqrver(学习笔记1 W3Cschool)
    关于 flutter开发碰到的各种问题,有的已经解决有的一直没解决或者用其他方法替代
    关于 Flutter IOS build It appears that your application still contains the default signing identifier.
    关于 flutter本地化问题 The getter 'pasteButtonLabel' was called on null
  • 原文地址:https://www.cnblogs.com/whatstone/p/11125352.html
Copyright © 2011-2022 走看看