zoukankan      html  css  js  c++  java
  • app 调用手机相机、相册完成图片上传

    送您一个最高1888元的阿里云大礼包,快来领取吧~

    1.调用相机相册

    //调用相机
        function getCamera(callBack) {
            var camera = plus.camera.getCamera();
            camera.captureImage(function(path) {
                callBack(path);
            }, function(error) {
                console.log(error.message);
            }, {
                filename: "_doc/camera/",
                index: 1
            })
        }

    2.调用后台上传接口

    /*调用后台上传接口*/
        function uploadImage(path, callBack) {
            var task = plus.uploader.createUpload(API_CONFIG.upload, {
                    method: "POST"
                },
                function(t, status) {
                    console.log(status);
                    if(status == 200) {
                        var result = JSON.parse(t.responseText);
                        callBack(result);
                    } else {
                        plus.nativeUI.toast('图片上传失败');
                    }
                }
            );
            task.addFile(path, {
                key: "files"
            });
            task.start();
        }

    3.使用h5 压缩上传的图片

    /**
         * h5+压缩
         */
        function H5Zip(fileData) {
            plus.zip.compressImage({
                src: fileData.path,
                dst: "_downloads/camera" + fileData.path.substring(fileData.path.lastIndexOf('/')),
                overwrite: true,
                format: 'jpg',
                quality: 20
            }, function(event) {
                plus.nativeUI.showWaiting("请稍后...");
                //压缩图片成功
                uploadImage(event.target, function(data) {
                    console.log(JSON.stringify(data));
                    if(null != data) {
                        plus.nativeUI.closeWaiting();
                        if(data.code == "1000") {
                            console.log(data.fillPath);
                            var newNode = document.createElement("li");
                            newNode.setAttribute("class", "mui-table-view-cell mui-media mui-col-xs-4");
                            newNode.innerHTML = '<a href="#">' +
                                '<img data-preview-src="" data-preview-group="2" class="mui-media-object" src="' + data.fillPath + '" style="100px;height:100px;" >' +
                                '<img class="del" src="../../img/project/cha.png" width="20px" />' +
                                '<input type="hidden" name="fileName" value="' + data.subPath + '"> ' +
                                '</a>';
                            document.getElementById('photoList').appendChild(newNode);
                            photosCount++;
                            imgPaths.push(event.target);
                        } else {
                            mui.toast("数据异常");
                        }
                    } else {
                        mui.toast('图片上传失败')
                        plus.nativeUI.closeWaiting();
                    }
                });
    
            }, function(e) {
                plus.nativeUI.toast("操作失败");
            });
        }

    4.点击上传图片调用的方法

    //图片上传
        function addImg() {
            if(photosCount >= 9) {
                mui.toast('最多选取9张图片');
                return;
            }
            plus.nativeUI.actionSheet({
                cancel: "取消",
                buttons: [{
                    title: "从相册选择"
                }, {
                    title: "拍照"
                }]
            }, function(event) {
                if(event.index == 1) {
                    plus.gallery.pick(function(e) {
                        for(var i in e.files) {
                            var path = e.files[i];
                            plus.io.resolveLocalFileSystemURL(path, function(entry) {
                                // 可通过entry对象操作test.html文件 
                                entry.file(function(file) {
                                    var fileData = {};
                                    fileData.name = file.name;
                                    fileData.path = "file://" + file.fullPath;
                                    H5Zip(fileData); //压缩图片并上传
                                });
                            }, function(e) {
                                mui.toast("Resolve file URL failed: " + e.message);
                            });
                        }
                    }, function() {
                        plus.nativeUI.toast('取消选择图片');
                    }, {
                        filter: 'image',
                        multiple: true,
                        maximum: 9 - photosCount,
                        system: false,
                        onmaxed: function() {
                            plus.nativeUI.toast('最多只能选取9张图片');
                        }
                    });
                } else if(event.index == 2) {
                    console.log(22);
                    getCamera(function(path) {
                        plus.io.resolveLocalFileSystemURL(path, function(entry) {
                            // 可通过entry对象操作test.html文件 
                            entry.file(function(file) {
                                var fileData = {};
                                fileData.name = file.name;
                                fileData.path = "file://" + file.fullPath;
                                console.log(JSON.stringify(fileData));
                                H5Zip(fileData); //压缩图片并上传
                            });
                        }, function(e) {
                            mui.toast("Resolve file URL failed: " + e.message);
                        });
    
                    });
                }
            });
        }

    5.效果图

    送您一个最高1888元的阿里云大礼包,快来领取吧~

  • 相关阅读:
    压缩感知的由来
    VS2010自动崩溃问题
    随机过程好书推荐
    Kernel PCA
    稀疏性与L1范数
    豆瓣关于计算机视觉的书评及介绍
    压缩感知测量矩阵的研究现状(转)
    信号的功率谱、能量谱、频谱的区别(转)
    vc++ & matlab 换行符号
    arg min 的含义
  • 原文地址:https://www.cnblogs.com/zhou-pan/p/9590109.html
Copyright © 2011-2022 走看看