起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6927|回复: 12

[结贴] 关于com.synconset.imagepicker

[复制链接]

23

主题

77

帖子

421

积分

中级会员

Rank: 3Rank: 3

积分
421
QQ
发表于 2017-3-7 19:02:11 | 显示全部楼层 |阅读模式
我按例子使用com.synconset.imagepicker,打包发布,选择相片时不能选择,在调试模式行时不行。点上传先要调出摄像头拍照?请大神帮忙看看
代码如下:
define(function(require){
        var $ = require("jquery");
        var justep = require("$UI/system/lib/justep");
    require("cordova!com.synconset.imagepicker");
    //require("$UI/system/lib/cordova/cordova");               
    //require("cordova!cordova-plugin-camera");
        //var ImagesZoom = require("$UI/weboa/m/upold/scale");
        var pgdh="",pid="",xzid=0,type="",username="";
        var Model = function(){
                this.callParent();
               
                //this.id = 0;
                //this.ownerID =justep.Date.toString(new Date(), 'yyyyMMdd');
                //this.user =localStorage.getItem("username");
        };
        Model.prototype.modelLoad = function(event){
       
                // 初始化商品图片大图展示
                //ImagesZoom.init({ "elem" : (".showBigImgClass"), "rootdom" : this.getElementByXid("panel1") });
                //$("div[xid=panel2]").hide();
                //$("div[xid=divUploadImages]").show();
        };       
        Model.prototype.modelParamsReceive = function(event){
         var context = this.getContext(),wjpah,m=this;
         pgdh=event.params.data.pgdh;
          // pgdh=context.getRequestParameter('pgdh');//接收?pgdh=&方式的参数
           type="WX";
           username=localStorage.getItem("username");
           //m.comp("imgData").clear();
          // m.comp("imgData").setFilter("filter","tbvalue='"+pgdh+"'");
      // m.comp("imgData").refreshData();
     //  id = m.comp("imgData").getValue("id");
      // if(id.substring(0,8)===justep.Date.toString(new Date(), 'yyyyMMdd')){pid= String(parseInt(id)+1);}
       //if(parseInt(id.substring(0,8))<parseInt(justep.Date.toString(new Date(), 'yyyyMMdd'))){
      // pid=justep.Date.toString(new Date(), 'yyyyMMdd')+"0001";}
      // if(type.equals("WX")){wjpah="WXJL"}
       //if( m.comp("imgData").)
      // m.comp("imgData").each(p){
       //$("div[xid=divUploadImages]").html("<div xid='"+p.row.val("id")+"' style='height:40px;width:40px;'> <img src='$UI/lsqlupold/img/"+wjpah+"/"+p.row.val("filename2")+"' alt='"+p.row.val("fname")+"' xid='"+p.row.val("id")+"'></img></div>")
      // }
               
        };
Model.prototype.button1Click = function(event){
                var $divUploadImages = $(this.getElementByXid("divUploadImages"));
                function onSuccess(imageURI) {
                        window.resolveLocalFileSystemURI(imageURI, function(entry) {
                                console.log(entry);
                                var arr = entry.name.split(".");
                                var imgname = (new justep.UUID()).valueOf() + '.' + arr[arr.length-1];
                                var imgtey = arr[arr.length-1];
                                var name = (new justep.UUID());
                                entry.file(function(file) {
                            var reader = new FileReader();
                            reader.onloadend = function(e) {
                                var aRemove = '<a class="x-remove-barget" onclick="javascript(this).parent().remove();"></a>';
                                    var imghtml = '<div class="weui_uploader_image_div"><img class="weui_uploader_image" src="'
                                            + entry.toInternalURL()+ '" onclick="javascript:void(0);" imgname="'+ imgname
                                            + '" base64str="' + e.target.result +' imgtey="'+imgtey+' name="'+name+'"></img>' + aRemove + '</div>';
                                    $divUploadImages.prepend(imghtml);
                            };
                            reader.readAsDataURL(file);
                        }, function(e) {
                                justep.Util.hint("读写出现异常: " + e.message);
                        })
                        }, function() {
                                justep.Util.hint("打开图片出现异常!");
                        });
                }
                function onFail(message) {
                        justep.Util.hint(message);
                }
                navigator.camera.getPicture(onSuccess, onFail, {
                        quality : 50,
                        sourceType : 1 // 0、2为从相册文件中选择,1为拍照
                });
        };       
       
        //图库选择图片
        Model.prototype.button2Click = function(event){
                var $divUploadImages = $(this.getElementByXid("divUploadImages"));
                document.addEventListener("deviceready", androidOnDeviceReady, false);
                function androidOnDeviceReady() {
                        imagePicker.getPictures(androidSuccessCallback, errorCallback,{
                                "maximumImagesCount" : 20,//最大图片选择数量
                                "width" : 200,//图片的高度和宽度限定,如果都写成0,则按照图片大小显示,不为0且大于该值则进行等比例压缩
                                "height" : 200,
                                "quallity" : 100,//图片质量,取值为0-100
                                "outputType" : 0//导出图片的类型,默认为FILE_URI(实际值为0),BASE64_STRING (实际值为1)
                        });
                }
                function androidSuccessCallback(result) {
               
                        if (result.length > 0) {
                                for (var i = 0; i < result.length; i++) {
                                        window.resolveLocalFileSystemURI(result[i], function(entry) {
                                                console.log(entry);
                                                var arr = entry.name.split(".");
                                                var imgname = (new justep.UUID()).valueOf() + '.' + arr[arr.length-1];
                                                var imgtey = arr[arr.length-1];
                                                var name = (new justep.UUID()).valueOf()
                                                //alert(arr+"|"+imgname+"|"+imgtey+"|"+name);
                                                entry.file(function(file) {
                                            var reader = new FileReader();
                                            reader.onloadend = function(e) {
                                                    var aRemove = '<a class="x-remove-barget" onclick="javascript(this).parent().remove();"></a>';
                                                    var imghtml = '<div class="weui_uploader_image_div"><img class="weui_uploader_image" src="'
                                                            + entry.toInternalURL()+ '" onclick="javascript:void(0);" imgname="'+ imgname
                                                            + '" base64str="' + e.target.result +' imgtey="'+imgtey+' name="'+name+'"></img>' + aRemove + '</div>';
                                                    $divUploadImages.prepend(imghtml);
                                            };
                                            reader.readAsDataURL(file);
                                        }, function(e) {
                                                justep.Util.hint("读写出现异常: " + e.message);
                                        })
                                        }, function() {
                                                justep.Util.hint("打开图片出现异常!");
                                        });
                                }
                        } else {
                                console.log("没有选择图片");
                        }
                }
                function errorCallback(error) {
                        justep.Util.hint("错误信息: " + JSON.stringify(error));
                }
        };       
       
        //提交
        Model.prototype.savClick = function(event){
                var self = this;
                //var description = self.comp("suggestTextarea").val();
                //if(!description){
                //        justep.Util.hint("请填写处理文字描述!");
                //        return;
                //}
                //self.popOverZz = self.comp("popOverZz");//遮罩
                //self.popOverZz.show();
                //上传图片数据封装
                var $imgs = $(this.getElementByXid("divUploadImages")).find("img.weui_uploader_image");
                var imageUrlsArr = [];
                alert("ok");
                for(var i=0; i<$imgs.length; i++){
                        var $img = $imgs.eq(i);
                        var imageData = $img.attr("base64str");
                        var imageName = $img.attr("imgname");
                        var Name = $img.attr("name");
                        var imgtey = $img.attr("imgtey");
                        var params = {
                                "imageName" : imageName,
                                "imageData" : imageData,
                                "Name":Name,
                                "imgtey":imgtey,
                                "pgdh":pgdh
                        };
                        imageUrlsArr.push(params);
                }
                //保存
                justep.Baas.sendRequest({
                        "url" : "/lsqlupold/img",
                        "action" : "imgSav",
                        "async" : true,
                        "params" : {imageUrlsArr:imageUrlsArr, id:pgdh, username:username,pgdh:pgdh },
                        "success" : function(data) {
                                if(data.ok){
                                        justep.Util.hint("文件上传完成!");
                                        justep.Shell.closePage();
                                }else{
                                        justep.Util.hint(data.errorMsg);
                                }
                        }
                });
        };       
        return Model;
});
发表于 2017-3-8 09:38:46 | 显示全部楼层
本帖最后由 liangyongfei 于 2017-3-8 09:41 编辑

先直接运行这个案例!使用appLoader 运行,是否正常能运行!
/UI2/demo/plugin/imagepicker/demo.w

本地测试。本地 URL 可以获取到,不过图片却没显示在dom节点上!

你可以alert 打印一下 这个值:entry.toInternalURL()
获取的路径是cdvfile 格式的路径

获取到这个URL以后,上传请参考:http://bbs.wex5.com/forum.php?mod=viewthread&tid=68669   http://bbs.wex5.com/forum.php?mo ... 8&pid=165225779
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

23

主题

77

帖子

421

积分

中级会员

Rank: 3Rank: 3

积分
421
QQ
 楼主| 发表于 2017-3-8 11:26:25 | 显示全部楼层
问题:1、运行 Model.prototype.savClick = function(event){}这个先调出摄像头,再上传,这是为什么?
         2、运行 Model.prototype.button2Click = function(event){}打包发布,可以打开相册,选择相片时选择不中,在调试模式时行时不行。
         3、运行Model.prototype.button1Click = function(event){}不管是什么模式,可以调出摄像头,但照的照片不能选中.
就是上面的代码。
回复 支持 反对

使用道具 举报

发表于 2017-3-8 13:46:27 | 显示全部楼层
zas 发表于 2017-3-8 11:26
问题:1、运行 Model.prototype.savClick = function(event){}这个先调出摄像头,再上传,这是为什么?
    ...

savClick  没看到有调用摄像头的代码啊!
你的功能页面,建议先使用appLoader  的方式,右键运行,是否正常??

1.建议先试试平台自带的测试案例,比如:/UI2/demo/plugin/imagepicker/demo.w  使用是正常的吗??本地测试是正常的,你可以参考下代码
2.js代码运行需要真机调试:
http://docs.wex5.com/android-and-ios-device-debugging/ 
才可以找出哪行问题出错的,以及报错原因!

只看js代码 着实看不出所以然
你先按我这两条建议试试吧
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

23

主题

77

帖子

421

积分

中级会员

Rank: 3Rank: 3

积分
421
QQ
 楼主| 发表于 2017-3-8 19:42:39 | 显示全部楼层
选择图片在:}, function() {
                                                justep.Util.hint("打开图片出现异常!");
                                        });
这个地方报错!不知道什么问题
回复 支持 反对

使用道具 举报

发表于 2017-3-9 09:30:56 | 显示全部楼层
zas 发表于 2017-3-8 19:42
选择图片在:}, function() {
                                                justep.Util.hint("打开图 ...

报什么错??错误信息是什么??
你真机调试了吗??代码执行到哪儿 开始 出错的??
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

23

主题

77

帖子

421

积分

中级会员

Rank: 3Rank: 3

积分
421
QQ
 楼主| 发表于 2017-3-9 14:16:35 | 显示全部楼层
本帖最后由 zas 于 2017-3-9 14:40 编辑

  function androidSuccessCallback(result) {
             问题在这里:   
                        if (result.length > 0) {
                                for (var i = 0; i < result.length; i++) {    //  当我在这里加个alert(");每次都可以选择了,但只是在调试模式。发布模式还没有试。                          在这个位置         而在例子中多了:(function(){
              var dfd = $.Deferred();
              dfds.push(dfd);
                                        window.resolveLocalFileSystemURI(result, function(entry) {
                                                console.log(entry);
                                                var arr = entry.name.split(".");




这是什么问题????


回复 支持 反对

使用道具 举报

发表于 2017-3-9 14:51:33 | 显示全部楼层
zas 发表于 2017-3-9 14:16
function androidSuccessCallback(result) {
             问题在这里:   
                        if  ...

http://www.ruanyifeng.com/blog/2 ... eferred_object.html

就按照例子的写法做吧!
你上网了解下Deferred ,是为了延迟执行回调函数用的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

23

主题

77

帖子

421

积分

中级会员

Rank: 3Rank: 3

积分
421
QQ
 楼主| 发表于 2017-3-9 15:02:58 | 显示全部楼层
原来如比!!!!!!!!
谢谢!
回复 支持 反对

使用道具 举报

23

主题

77

帖子

421

积分

中级会员

Rank: 3Rank: 3

积分
421
QQ
 楼主| 发表于 2017-3-9 20:46:05 | 显示全部楼层
终于搞定:我将选择图片和拍摄照片分成两个页面做,一切正常。原因是什么还是没有搞明白。关贴吧



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-4-25 17:00 , Processed in 0.083244 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表