mui调本地相册上传图片

mui调用本地相册和拍照功能

图例

只用更改上传图片ajax部分代码即可

1、html

<div class="headdiv">
    <img src="" id="userImg"/>
</div>

2、js

<script>
    /*调相机本地相抵上传图片*/
    mui.plusReady(function(){
        document.getElementById(‘userImg‘).addEventListener(‘tap‘,function(){
            if(mui.os.plus){
                var a=[{
                    title:‘拍照‘
                },{
                    title:‘从手机相册选择‘
                }];
                plus.nativeUI.actionSheet({
//                  title:‘修改头像‘,
                    cancel:‘取消‘,
                    buttons:a
                },function(b){
                    switch(b.index){
                        case 0:
                            break;
                        case 1:
                            //拍照
                            getImages();
                            break;
                        case 2:
                            //打开相册
                            galleryImages();
                            break;
                        default:
                            break;
                    }
                },false);
            }
        });

        //拍照
        function getImages(){
            var mobileCamera=plus.camera.getCamera();
            mobileCamera.captureImage(function(e){
                plus.io.resolveLocalFileSystemURL(e,function(entry){
                    var path=entry.toLocalURL()+‘?version=‘+new Date().getTime();
                    uploadHeadImg(path);
                    console.log(path);
                },function(err){
                    console.log("读取拍照文件错误");
                });
            },function(e){
                console.log("er",err);
            },function(){
                filename:‘_doc/head.png‘;
            });
        }

        //本地相册选择
        function galleryImages() {
            plus.gallery.pick(function(a) {
                plus.io.resolveLocalFileSystemURL(a, function(entry) {
                    plus.io.resolveLocalFileSystemURL("_doc/", function(root) {
                        root.getFile("head.png", {}, function(file) {
                            //文件已存在
                            file.remove(function() {
                                console.log("file remove success");
                                entry.copyTo(root, ‘head.png‘, function(e) {
                                        var e = e.fullPath + "?version=" + new Date().getTime();
                                        uploadHeadImg(e); /*上传图片*/
                                        //变更大图预览的src
                                        //目前仅有一张图片,暂时如此处理,后续需要通过标准组件实现
                                    },
                                    function(e) {
                                        console.log(‘copy image fail:‘ + e.message);
                                    });
                            }, function() {
                                console.log("delete image fail:" + e.message);
                            });
                        }, function() {
                            //文件不存在
                            entry.copyTo(root, ‘head.png‘, function(e) {
                                    var path = e.fullPath + "?version=" + new Date().getTime();
                                    uploadHeadImg(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"
            })
        }; 

        //上传图片
        function uploadHeadImg(imgPath){
            //选中图片之后,头像当前的照片变为选择的照片
            var mainImg=document.getElementById(‘userImg‘);
            mainImg.src=imgPath;

            var images=new Image();
            images.src=imgPath;
            var imgData=getBase64Image(images);
            mui.ajax(‘‘,{  //第一个参数是接口名
                data:{
                    ‘imgDatas‘:imgData
                },
                dataType:‘json‘,//服务器返回json格式数据
                type:‘post‘,//HTTP请求类型
                timeout:10000,//超时时间设置为10秒;
                success:function(data){
                    if(data.status==‘1‘){
                        mui.alert(‘上传成功!‘);
                    }
                },
                error:function(xhr,type,errorThrown){
                    if(type==‘timeout‘){
                        mui.alert(‘服务器连接超时,请稍后再试‘);
                    }
                }
            });
        }

        //压缩图片转成base64
        function getBase64Image(img){
            var canvas=document.createElement("canvas");
            var width=img.width;
            var height=img.height;
            if(width>height){
                if(width>100){
                    height=Math.round(height*=100/width);
                    width=100;
                }
            }else{
                if(height>100){
                    width=Math.round(width*=100/height);
                }
                height=100;
            }

            canvas.width=width;
            canvas.height=height;
            var ctx=canvas.getContext(‘2d‘);
            ctx.drawImage(img,0,0,width,height);

            var dataUrl=canvas.toDataURL(‘image/png‘,0.8);
            return dataUrl.replace(‘data:image/png:base64,‘,‘‘);
        }
    });
</script>

原文地址:https://www.cnblogs.com/dxt510/p/8303551.html

时间: 2024-10-22 06:02:19

mui调本地相册上传图片的相关文章

ios开发之调用相机和本地相册

ios调用本地相机和相册, 非常实用的小功能, 一般做上传头像的时候会用到的比较多. 我用的是iPhone5做的测试, 没有出现什么问题. 用真机测试的主要原因是模拟器无法实现拍照功能, 拍照功能只能在真机上调用.下面是我的一些代码, 写的比较粗糙, 但是简单易懂. // 首先来写一些委托 定义一个全局变量 @interface TestViewController : UIViewController<UIActionSheetDelegate,UIImagePickerControllerD

IOS研究院之打开照相机与本地相册选择图片

如下图所示 在本地相册中选择一张图片后,我们将他拷贝至沙盒当中,在客户端中将它的缩略图放在按钮旁边,这个结构其实和新浪微薄中选择图片后的效果一样.最终点击发送将按钮将图片2进制图片上传服务器. 下面我们仔细学习具体的细节.创建一个空的IOS项目,接着在创建一个ViewController. AppDelegate.h 应用的代理类 这个没什么好说的就是直接打开刚刚创建的新ViewController. 1 #import <UIKit/UIKit.h> 2 #import "Test

Android中通过访问本地相册或者相机设置用户头像

目前几乎所有的APP在用户注册时都会有设置头像的需求,大致分为三种情况: (1)通过获取本地相册的图片,经过裁剪后作为头像. (2)通过启动手机相机,现拍图片然后裁剪作为头像. (3)在APP中添加一些自带的头像资源,供用户选择(不够人性化,目前很少使用). 这次我们简单介绍下通过获取本地相册以及相机拍摄的方法设置头像,实现思路如下: (1)通过startActivityForResult方法,分别传递调用系统相册的Intent和调用相机拍照的Intent来做选择 (2)调用Android系统中

Android:支持多选的本地相册

前段时间在做一个动态发布功能,需要用到图片上传.一开始直接调用的系统相册和相机,由于系统相机不支持多选,就花点时间做了个本地相册,在此开源下. 先上截图,依次为选择相册界面.相册详情界面.查看图片大图界面    相册列表按图片数量降序排序,相册详情列表按图片时间降序排序,对比了下微信和QQ的相册,读取的文件基本一致. 接下来说下相册文件遍历的思路.首先肯定不会是通过文件夹逐级遍历的,这样效率太低.查了下API发现Android的系统数据库已经存储了所有的图片路径和缩略图路径(如果有),可直接通过

iOS 图片保存到本地相册

点击按钮,将self.imageView上面的image内容保存到本地相册,并指定判断保存成功与否的方法imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo: - (IBAction)saveImageToAlbum:(id)sender {    UIImageWriteToSavedPhotosAlbum(self.imageView.image, self, @selector(imageSavedToPhotosAlbu

iOS--将图片保存至本地相册

今天做聊天,领导说对方给我发一个图片,我要保存到本地,IOS的UIKit Framework提供了UIImageWriteToSavedPhotosAlbum方法对图像进行保存,该方法会将image保存至用户的相册中: 上代码: void UIImageWriteToSavedPhotosAlbum ( UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo ); 参数说明: image : 需

Android_优化查询加载大数量的本地相册图片

一.概述 讲解优化查询相册图片之前,我们先来看下PM提出的需求,PM的需求很简单,就是要做一个类似微信的本地相册图片查询控件,主要包含两个两部分: 进入图片选择页面就要显示出手机中所有的照片,包括系统相册图片和其他目录下的所有图片,并按照时间倒叙排列 切换相册功能,切换相册页面列出手机中所有的图片目录列表,并且显示出每个目录下所有的图片个数以及封面图片 这两个需求看似简单,实则隐藏着一系列的性能优化问题.在做优化之前,我们调研了一些其他比较出名的app在加载大数量图片的性能表现(gif录制的不够

YS&ldquo;本地相册&rdquo;功能存在反射型XSS漏洞【中危】

这是在测试YS"本地相册"功能时发现的一个反射型XSS,自己在安全测试过程中也发现过不少XSS漏洞,唯独这个的发现过程有点区别. 在此之前,我在测试另外一个模块的功能接口的时候发现了一个反射型XSS,当我在测试"本地相册"这个功能的时候,当我用burp拦截到HTTP请求时,发现该请求有3个参数,仔细观察,发现这3个参数居然和之前有XSS漏洞的接口的参数是一模一样的,但是有区别的地方:两者接口名称(action)是不一样的,两者参数个数不一样,之前的是4个,"

iOS-获取本地相册的所有图片展示在cell上

本文Demo GitHub地址:https://github.com/xue-ios/Share_First  欢迎大家的Followers和Stars 声明:本文为本人原创作品~转载请注明出处~谢谢配合! 准备工作 1.下载MJExtension 数据转模型库 2.自定义cell 大致布局如下 大致实现的效果如下 <我适配横屏了 大家可随意> 让TableView支持横屏的代码如下: //支持横屏 myTableView.autoresizingMask = UIViewAutoresizi