流浪男
流浪男
  • 发布:2015-03-29 02:29
  • 更新:2021-02-09 10:18
  • 阅读:25868

【分享】头像类裁剪上传

分类:HTML5+

夜深了,分享个头像类的裁剪上传,代码写的比较啰嗦。
虽然说用jquery渲染力差,没办法,还是用了。然后借助cropper来完成裁剪

<script src="plugin/avatar/js/jquery.min.js"></script>  
<script src="plugin/avatar/js/cropper.js"></script>  
<link href="plugin/avatar/css/cropper.css" rel="stylesheet">

照片容器

<a href="#picture"><div id="changeAvatar"></div></a>

裁剪照片的容器(样式就自己写了)

<div id="showEdit">  
        <header class="mui-bar mui-bar-nav mui-nav-bg" style="background:none; position:absolute; top:0;">  
            <a class="mui-icon iconfont icon-roundclosefill mui-pull-left" style="color:#ffffff; font-size:36px;" onclick="closeEdit();"></a>  
            <a class="mui-icon iconfont icon-roundcheckfill mui-pull-right" style="color:#ffffff; font-size:36px;" onclick="confirm();"></a>  
        </header>  
        <div id="report"></div>  
    </div>

下面就很简单了,调用下相机和相册选择图片。然后加入cropper的几行代码就搞定了

//拍照  
function getImage() {  
    var cmr = plus.camera.getCamera();  
    cmr.captureImage( function (p) {  
        plus.io.resolveLocalFileSystemURL( p, function ( entry ) {      
            var localurl = entry.toLocalURL();//  
            $("#report").html('<img src="'+localurl+'">');  
            cutImg();  
            mui('#picture').popover('toggle');  
        });  
    });  
}  
//相册选取  
function galleryImgs(){  
    plus.gallery.pick( function(e){  
        $("#report").html('<img src="'+e.files[0]+'">');  
        cutImg();  
        mui('#picture').popover('toggle');  
    }, function ( e ) {  
        //outSet( "取消选择图片" );  
    },{filter:"image",multiple:true});  
}

照片裁剪类:

function cutImg(){    
    $("#showEdit").fadeIn();  
    var $image = $('#report > img');  
    $image.cropper({  
      aspectRatio: 1 / 1,  
      autoCropArea: 0.8  
    });  
}

确定裁剪并上传(base64)

function confirm(){  

    $("#showEdit").fadeOut();  
    var $image = $('#report > img');  
    var dataURL = $image.cropper("getDataURL");  
    $("#changeAvatar").html('<img src="'+dataURL+'" />');  
}  

function postAvatar() {  

    var $image = $('#report > img');  
    var dataURL = $image.cropper("getDataURL");  
    var data = {  
            base64: dataURL  
    };  
    $.post(url,data,function(data){  
        //这里就自己写了哈  
    });  
};

效果

有高手可以补充下的谢谢啦哈

23 关注 分享
raogang aaaa DCloud_heavensoft bober 尘岳two shuoS j豆豆 Snoopy 小莫骚麦 Oscar wind gaus 建东 suci 豆花饭 Trust 1***@qq.com taozijiayou jayhou 1***@qq.com 2***@qq.com 小明子 t***@protonmail.com

要回复文章请先登录注册

小龙哥

小龙哥

getDataURL返回的是obj不是所谓的base64image,看了官方文档解决了。

//加个canvas转base64的函数
function convertCanvasToImage(canvas) {
var image = new Image();
image.src = canvas.toDataURL("image/jpg");
return image;
}

然后,把楼主
var $image = $('#report > img');
var dataURL = $image.cropper("getDataURL");

代码替换成
var $image = $('#report > img');
var dataURL = convertCanvasToImage($image.cropper("getCroppedCanvas")).src;

//dataURL 就是base64
2015-09-25 09:53
小龙哥

小龙哥

getDataURL返回的是obj不是所谓的base64image 怎么破?
2015-09-24 18:00
AMB

AMB

求包
2015-09-12 18:58
melodic

melodic

回复 云钦 :
分享出来啊
2015-08-12 14:26
云钦

云钦

终于搞成功,上传base64感觉好慢啊
2015-08-03 21:47
云钦

云钦

期待官方尽快出demo,毕竟这个动能在app上还是很实用的。
2015-08-03 20:10
云钦

云钦

回复 deran :
确实取不到,已经研究2天了,肯定是能用的,不知道哪里出问题了。
2015-08-03 20:09
云钦

云钦

回复 deran :
jq官网有demo的,里面有详细的参数使用说明,但是getDataURL返回的是obj不是所谓的base64 image
2015-08-03 20:09
云钦

云钦

看着确实很强大,可惜没完全共享,故意吊大家胃口的么
2015-07-31 17:10
deran

deran

插件里面没有getDataURL这个函数啊!怎么获取裁剪后图像的url数据呢?
2015-07-14 16:47