3***@qq.com
3***@qq.com
  • 发布:2017-07-12 17:18
  • 更新:2017-07-14 15:45
  • 阅读:1514

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

分类:HTML5+

表面上的问题:
void plus.gallery.save( path, successCB, errorCB );

这个方法的回调函数successCB没有参数。无法得知保存的文件名。

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

cmr.captureImage( successCB, errorCB, option );
拍照成功后,得到的照片的路径。但是这路径如果作为参数传入
相册多选方法void plus.gallery.pick( successCB, errorCB, option );
当option ={ multiple:true, selected=[拍照的路径]}

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

所以回到了本文开头的表面问题==》想把拍照结果先存到相册里。但是存储之后又得不到路径。
来此求助,请指点。
如果有人(特别是官方的)回复,我立马去写个最小测试共验证提交过来。

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

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

最小原型工程已经提供,工程能直接运行。
还有调试时数据的截图,在附件里。

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  
                    globalPathList.push(p);  
                    printGlobalPathList();  

                    ////考虑在这里把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>
DCloud_App_Array

DCloud_App_Array

目前确实存在以上缺陷,主要问题是保存到系统相册后路径不确定导致无法选择。
我们后续再完善此功能。

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

    多谢,其实只是要个确定结果而已。在结果不确定前,总是到处摸索花很多不知道有没有回报的时间。目前这样结果也甚好。

    2017-07-14 15:43

  • 张德帅

    你好,请问你找到解决方案没有?

    2018-01-04 10:34

3***@qq.com

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

现在app的基本功都是文字和图片发布。图片的多选是个标配,多选图片时,拍照和来自相册也是经典搭配。这个层面来讲还望突破一下这个问题。有点伤。。。。

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