apiCloud 选择图片,选择视频,压缩图片

选择视频或图片,只需要一个 UIMediaScanner 模板就可以实现,点击链接查看api

https://docs.apicloud.com/Client-API/UI-Layout/UIMediaScanner

textareaClick: [{
   text: '',
   img: [],
   realImg: [],
   realVideo: [],
   video: []
}],

        
        var app = new Vue({
            el: "#app",
            data: function() {
                return {
                    textareaClick: [{
                        text: '',
                        img: [],
                        realImg: [],
                        realVideo: [],
                        video: []
                    }],
                    token: ''
                }
            },
            methods: {
          upload_image: function(index) {
            //选择图片与视频
                    var this_obj = this;
                    var UIMediaScanner = api.require('UIMediaScanner');
                    UIMediaScanner.open({
                        type: 'all', //视频与图片,all(图片和视频)picture(图片)video(视频)
                        column: 4,
                        classify: true,
                        max: 3,
                        sort: {
                            key: 'time',
                            order: 'desc'
                        },
                        texts: {
                            stateText: '已选择*项',
                            cancelText: '取消',
                            finishText: '完成'
                        },
                        styles: {
                            bg: '#fff',
                            mark: {
                                icon: '',
                                position: 'bottom_left',
                                size: 20
                            },
                            nav: {
                                bg: '#eee',
                                stateColor: '#000',
                                stateSize: 18,
                                cancelBg: 'rgba(0,0,0,0)',
                                cancelColor: '#000',
                                cancelSize: 18,
                                finishBg: 'rgba(0,0,0,0)',
                                finishColor: '#000',
                                finishSize: 18
                            }
                        },
                        scrollToBottom: {
                            intervalTime: -1
                        },
                        exchange: true,
                        rotation: true
                    }, function(ret) {
                        if (ret) {
                            if (ret.eventType == 'confirm') {
                                this_obj.compress_img(ret.list, index);
                            }
                        }
                    });
                },
                compress_img: function(img_arr, arr_index) {
            //压缩图片
                    var UIMediaScanner = api.require('UIMediaScanner');
                    var imageFilter = api.require("imageFilter");
                    var temp_path1 = img_arr.shift();
                    temp_path = temp_path1.path;
                    var filename = Math.random() + '.jpg';
                    var this_obj = this;
                    var target_w = 500;
                    var type_play = temp_path1.suffix
                    if (api.systemType == "ios") {
                        UIMediaScanner.transPath({
                            path: temp_path
                        }, function(res, err) {
                            if (res.status) {
                                if (type_play == 'mp4') {
                                    this_obj.textareaClick[arr_index].video.push(res.path);
                                } else {
                                    imageFilter.getAttr({
                                        path: res.path
                                    }, function(ret, err) {
                                        if (ret.status) {
                                            if (ret.width < target_w) {
                                                target_w = ret.width;
                                            }
                                            var original_w = ret.width;
                                            var original_h = ret.height;
                                            var scale = original_w / target_w;
                                            var target_h = Math.round(original_h / scale);
                                            imageFilter.compress({
                                                img: res.path,
                                                quality: 1,
                                                size: {
                                                    w: target_w,
                                                    h: target_h
                                                },
                                                save: {
                                                    album: false,
                                                    imgPath: api.cacheDir + '/upload/',
                                                    imgName: filename
                                                }
                                            }, function(ret, err) {
                                                if (ret.status) {
                                                    this_obj.textareaClick[arr_index].img.push(api.cacheDir + '/upload/' + filename);
                                                    if (img_arr.length > 0) {
                                                        this_obj.compress_img(img_arr, arr_index);
                                                    }
                                                }
                                            });
                                        }
                                    });
                                }
                            } else {
                                api.toast({
                                    msg: err
                                });
                            }
                        })
                    } else {
                        if (type_play == 'mp4') {
                            this_obj.textareaClick[arr_index].video.push(temp_path);
                        } else {
                            imageFilter.getAttr({
                                path: temp_path
                            }, function(ret, err) {
                                if (ret.status) {
                                    if (ret.width < target_w) {
                                        target_w = ret.width;
                                    }
                                    var original_w = ret.width;
                                    var original_h = ret.height;
                                    var scale = original_w / target_w;
                                    var target_h = Math.round(original_h / scale);
                                    imageFilter.compress({
                                        img: temp_path,
                                        quality: 1,
                                        size: {
                                            w: target_w,
                                            h: target_h
                                        },
                                        save: {
                                            album: false,
                                            imgPath: api.cacheDir + '/upload/',
                                            imgName: filename
                                        }
                                    }, function(ret, err) {
                                        if (ret.status) {
                                            this_obj.textareaClick[arr_index].img.push(api.cacheDir + '/upload/' + 

filename);
                                            if (img_arr.length > 0) {
                                                this_obj.compress_img(img_arr, arr_index);
                                            }
                                        }
                                    });
                                }
                            });
                        }
                    }
                }
            
                      }
                })                                 


 

console.log(this_obj.textareaClick)可以查看这个数组

原文地址:https://www.cnblogs.com/gqx-html/p/8304083.html