mui 图片上传,压缩,保存到相册

也是同事问我,说你这拍照上传有一个问题,相册里没有这些图片,想找到太难了,想了想算了,那就再保存到相册一份吧。是否压缩图片我增加了“是否上传原图” 按钮,也是考虑网络问题。将代码贴出来共享,^_^^_^

//获取照片方式 拍照或者文件选择

/**
 * 
 * @param {Object} title    actionSheet头部
 * @param {Object} callback    回调函数
 * @param {Object} fileName    图片名
 */
function getImgMethod(title, callback, fileName) {
    if(mui.os.plus) {
        var a = [{
            title: "拍照"
        }, {
            title: "从相册选择"
        }];
        plus.nativeUI.actionSheet({
            title: title,
            cancel: "取消",
            buttons: a
        }, function(b) { /*actionSheet 按钮点击事件*/
            switch(b.index) {
                case 0:
                    break;
                case 1:
                    getImage(callback, fileName); /*拍照*/
                    break;
                case 2:
                    galleryImg(callback, fileName); /*打开相册*/
                    break;
                default:
                    break;
            }
        })
    }
}

//拍照
/**
 * 
 * @param {Object} callback 回调函数
 * @param {Object} fileName    图片名称
 */
function getImage(callback, fileName) {
    var c = plus.camera.getCamera();
    var tpgs = c.supportedImageFormats; //摄像头支持的图片格式
    c.captureImage(function(e) {
        //先将原图保存到相册
        plus.gallery.save(e, function() {
            plus.io.resolveLocalFileSystemURL(e, function(entry) {
                var s = entry.toLocalURL(); //+ "?version=" + new Date().getTime();
                callback(s); /*上传图片*/
            }, function(e) {
                console.log("读取拍照文件错误:" + e.message);
            });
        })
    }, function(s) {
        console.log("error" + s);
    }, {
        filename: "_doc/" + fileName
    })
}

//本地相册选择 
/**
 * 
 * @param {Object} callback    回调函数
 * @param {Object} fileName 图片名称
 */
function galleryImg(callback, fileName) {
    plus.gallery.pick(function(a) {
        plus.io.resolveLocalFileSystemURL(a, function(entry) {
            plus.io.resolveLocalFileSystemURL("_doc/", function(root) {
                root.getFile(fileName, {}, function(file) {
                    //文件已存在 
                    file.remove(function() {
                        entry.copyTo(root, fileName, function(e) {
                                var e = e.toLocalURL() //+ "?version=" + new Date().getTime();
                                callback(e); /*上传图片*/
                                //变更大图预览的src 
                                //目前仅有一张图片,暂时如此处理,后续需要通过标准组件实现 
                            },
                            function(e) {
                                console.log('copy image fail:' + e.message);
                            });
                    }, function() {
                        console.log("delete image fail:" + e.message);
                    });
                }, function() {
                    //文件不存在 
                    entry.copyTo(root, fileName + '.png', function(e) {
                            var path = e.toLocalURL() + "?version=" + new Date().getTime();
                            callback(path); /*上传图片*/
                        },
                        function(e) {
                            console.log('copy image fail:' + e.message);
                        });
                });
            }, function(e) {
                console.log("get _www folder fail");
            })
        }, function(e) {
            console.log("读取拍照文件错误:" + e.message);
        });
    }, function(a) {}, {
        filter: "image"
    })
}

调用时:

压缩图片的参数含义请参考http://www.html5plus.org/doc/zh_cn/zip.html#plus.zip.compressImage

getImgMethod("选择图片", function(data) {
                        //是否上传原图
                        if(_this.isQulity) {
                            data = data + "?version=" + new Date().getTime();
                            var fileName = data.substring(data.lastIndexOf("/") + 1, data.lastIndexOf(
                                "?"));
                            app.$data.imgs.push({
                                name: fileName,
                                url: data,
                                isSave: 0
                            })
                        } else {
                            //压缩图片
                            plus.zip.compressImage({
                                src: data,
                                dst: "_doc/chat/camera/" + data,
                                quality: 20,
                                width: '50%',
                                height: '50%',
                                overwrite: true
                            }, function(e) {
                                data = data + "?version=" + new Date().getTime();
                                var fileName = data.substring(data.lastIndexOf("/") + 1, data.lastIndexOf(
                                    "?"));
                                app.$data.imgs.push({
                                    name: e.target,
                                    url: e.target,
                                    isSave: 0
                                })
                            })
                        }

                    }, 'hst' + new Date().getTime());

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值