手机浏览器拍照兼容

项目中一个功能是拍照上传,开始想着不是很简单吗?不就是html

<input type="file" id="file" accept="image/*;capture=camera" />html5

可是因为目前作的是混合app,在ios下是能够正常拍照的,安卓用扣扣,UC各类浏览器打开也都没问题,然而安卓一旦脱离这些浏览器,就只能选择相册中的照片不能拍照了ios

网上找了一堆input的兼容,可是都没有效果 浏览器

后来找到了:http://www.html5plus.org/doc/zh_cn/camera.htmlapp

上代码:测试

拍照:ui

getCamera(e){
                var that=this
                plus.camera.getCamera().captureImage(function(e){
                    console.log(e);
                    plus.io.resolveLocalFileSystemURL(e, function(entry) {
                        var path = entry.toLocalURL();
                        document.getElementById("pic").src = path;
                       
                    }, function(e) {
//                        mui.toast("读取拍照文件错误:" + e.message);
                    });

                });
            },

相册获取图片:this

album(){
                var that=this
                plus.gallery.pick(function(path){
                    plus.io.resolveLocalFileSystemURL(path, function(entry) {
                        var path = entry.toLocalURL();
                        document.getElementById("pic").src = path;
                      
                       
                    }, function(e) {
//                        mui.toast("读取拍照文件错误:" + e.message);
                    });
                });
            },

上传:url

 upload(src){
                //服务端接口路径
                var that=this
               
                //获取图片元素
//              var files = document.getElementById('headimg');
                // 上传文件
                //              task.addData("name","photo");
                var wt=plus.nativeUI.showWaiting();
                var task=plus.uploader.createUpload(url,
                    {method:"POST", priority: 60, timeout: 20, blocksize:100000000241024,retry:1},
                    function(t,status){ //上传完成
                        
                        if(status==200){
//                                alert("上传成功:"+t.responseText);
                            wt.close(); //关闭等待提示按钮
                        }else{
                            alert("上传失败");
                            wt.close();//关闭等待提示按钮
                        }
                    }
                );
                //添加其余参数
                task.addFile(src,{key:"uploadFile"});

                task.start();
            }

经测试,此方式可兼容安卓,iOS,然而图片未压缩,上传速度慢,一样查看文档找到压缩代码:spa

 resizeImage(src) {
              var that = this;
              plus.zip.compressImage(
                {
                  src: src,
                  dst: src,
                  overwrite: true,
                  width: '270px', //这里指定了宽度,一样能够修改
                  format: 'jpg',
                  quality: 100  //图片质量再也不修改,以避免失真
                },
                function(e) {
                  plus.nativeUI.closeWaiting();
                  that.upload(e.target);  //上传图片, e.target存的是本地路径!
                },
                function(err) {
                  plus.nativeUI.alert('未知错误!',function() {
//                    mui.back();
                  });
                }
              );
            },

以上。

相关文章
相关标签/搜索