3***@qq.com
3***@qq.com
  • 发布:2017-07-14 12:14
  • 更新:2017-07-14 12:28
  • 阅读:1408

【报Bug】图片多选模式下,不能钩中调用相机产生的图片路径

分类:HTML5+

详细问题描述
[内容]
【附件里有最小的“纯净”的重现问题的源码工程直接可运行,有备注】

在ios设备上,拍照得到的图片路径有个缺陷(不知道是不是没有理解对造成的):

cmr.captureImage( successCB, errorCB, option );

拍照成功后,得到的照片的路径。但是这路径如果作为参数传入

相册多选方法void plus.gallery.pick( successCB, errorCB, option );

当option ={ multiple:true, selected=[拍照的路径]}

相册多选图片模式下并没有勾中刚才拍的照片,因为照片不在相册图片集中。

重现步骤
[步骤]
1.拍照一张图片
2.把拍照结果路径保存起来

  1. 把拍照路径在多选相册模式下作为参数传入
    [结果]
    拍照的路径并没有被勾选中。
    [期望]
    拍照的路径应该有选中效果

即便调用了plus.gallery.save方法把拍照结果存到相册下,也无效。
并且plus.gallery.save方法的成功分支回调,没有提供保存的路径,否则这个问题也能避免。

安卓多选模式下也有此问题。
运行环境
ios手机
[系统版本]
9.3
[浏览器版本]
[IDE版本]
[mui版本]

附件
[代码片段]

[安装包]

联系方式
[QQ]378983249
[电话]15178729567

2017-07-14 12:14 负责人:无 分享
已邀请:
3***@qq.com

3***@qq.com (作者)

<!DOCTYPE html>  
<html>  

    <head>  
        <meta charset="UTF-8">  
        <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">  
        <meta name="apple-mobile-web-app-capable" content="yes">  
        <meta name="apple-mobile-web-app-status-bar-style" content="black">  
        <title></title>  
        <script src="../js/mui.min.js"></script>  
    </head>  

    <body>  
        <input type="button" value="先点击拍照得到一张图片#" id="btnCamera" />  
        <br/> <br/> <br/>  
        <input type="button" value="再本地多选几张图片#" id="btnGallery" />  

    </body>  
    <script>  
        window.onload = function() {  
            mui.plusReady(function() {  
                UIEventBind();  
            });  
        }  

        //全局记录所有的图片路径数组  
        var globalPathList = [];  

        //绑定控件行为  
        function UIEventBind() {  
            document.getElementById("btnCamera").onclick = openCamera;  
            document.getElementById("btnGallery").onclick = openGallery;  
        }  

        //打印当前所有的图片路径  
        function printGlobalPathList() {  
            console.log("当前所有地址信息如下======");  
            for(var i in globalPathList) {  
                console.log(globalPathList[i]);  
            }  
            console.log("当前所有地址信息输出完毕");  
        }  

        //拍照得到一张图  
        //camera的文档路径,方便你查看 http://www.html5plus.org/doc/zh_cn/camera.html  
        function openCamera() {  
            console.log("openCamera now!");  
            plus.camera.getCamera().captureImage(  
                function(p) {  
                    console.log("转换前=>" + p); //转换前=>_doc/1499932421807.jpg  
                    p = plus.io.convertLocalFileSystemURL(p); //路径转换为本地绝对路径  
                    if(p.indexOf('file:///') == 0) {  
                        //do nothing;  
                    } else {  
                        p = "file:///" + p;  
                    }  
                    console.log("转换后=>" + p);  
                    //转换后=>file:////storage/emulated/0/Android/data/io.dcloud.HBuilder/.HBuilder/apps/HBuilder/doc/1499932421807.jpg  

                    plus.gallery.save(p, function() {  
                        alert("succeed!");  
                        globalPathList.push(p);  
                        printGlobalPathList();  
                    }, function() {  
                        alert("err!");  
                    });  

                    ////考虑在这里把p先存入到相册,再得到相册保存的路径,但是无法得到保存路径回调  
                    //plus.gallery.save没有路径回调  
                },  
                function(e) {  
                    console.log("取消选择图片");  
                }  
            );  
        }  

        //相册选择多张图  
        //gallery,方便你查看 http://www.html5plus.org/doc/zh_cn/gallery.html  
        function openGallery() {  
            console.log("openGallery now!");  

            var isSystem = true; //ios测试这里改为true,调用系统相册才是测试目的  
            if(mui.os.android) {  
                isSystem = false; //安卓本身不支持多选,所以用dlcoud提供的多选,故system:false  
            }  

            plus.gallery.pick(  
                function(event) {  
                    console.log("选择的图片为:" + JSON.stringify(event.files));  
                    for(var s in event.files) {  
                        var path = event.files[s];  
                        if(globalPathList.indexOf(path) < 0) { //避免添加重复路径  
                            globalPathList.push(path);  
                        }  
                    }  
                    printGlobalPathList();  
                },  
                function(e) {  
                    console.log("取消选择图片");  
                }, {  
                    filter: "image",  
                    multiple: true,  
                    system: isSystem,  
                    selected: globalPathList,  
                    maximum: 9  
                }  
            );  
        }  
    </script>  

</html>

该问题目前已经被锁定, 无法添加新回复