具体内容如下头像上传的小功能.js文件这是js

  本文实例为大家分享了cropper.js和exif.js实现头像上传缩放裁剪旋转的具体代码,供大家参考,具体内容如下

  做了一个头像上传的小功能,同时处理了ios竖着拍照图片旋转的问题。cropper.js(注意:cropper压缩版的js在手机版版缩放图片会有黑屏和图片飞了的bug,所以建议引入开发版本的cropper)依赖jquery,exif是用来获取拍照信息的,用于修复ios竖着拍照旋转的问题,我用的是amazeui框架js裁剪上传图片的插件js裁剪上传图片的插件,我在文件中也引入。

  这是html文件

  <pre class="brush:xhtml;">

    
    
    
    cropper图片裁剪缩放
    
    
    

    
        logo
        
            [
                js裁剪上传图片的插件_js裁剪图片并上传图片_手机端js图片上传裁剪
                
            ][3]
        
    
    
    
        
            
                关闭
                #上传
            
            
                
                    
                        
                    
                
                
                    
                        上传图片
                        
                    
                    
                        左
                        右
                    
                    
                        确定
                    
                
            
        
    

</pre>

  这是js文件

  <pre class="brush:js;">$(function() {
    'use strict';
    // 初始化
    var $image = $('#image');
    $image.cropper({
        aspectRatio:1/1,
        viewMode : 1,
        autoCropArea:0.8,
        dragMode:'move',
        cropBoxMovable:false,
        cropBoxResizable:false,
        zoomOnTouch:true,
        zoomable:true,
        movable:true,
    });
    var $inputImage = $('#inputImage');
    var URL = window.URL || window.webkitURL;
    var Orientation
    var rotate_num
    var blobURL;
    if (URL) {
        $inputImage.change(function () {
            var files = this.files;
            var file;
            if (files && files.length) {
                file = files[0];
                if (/^image/w+$/.test(file.type)) {
                    blobURL = URL.createObjectURL(file);
                    $image.attr("src",blobURL)
                    EXIF.getData(file, function() {
                        EXIF.getAllTags(this);
                        Orientation = EXIF.getTag(this, 'Orientation');
                    });
                    $image.one('built.cropper', function () {
                        // Revoke when load complete
                        URL.revokeObjectURL(blobURL);
                    }).cropper('reset', true).cropper('replace', blobURL);
                    $inputImage.val('');
                } else {
                    window.alert('Please choose an image file.');
                }
            }
        });
    } else {
        $inputImage.prop('disabled', true).parent().addClass('disabled');
    }
    $('#up-btn-ok').on('click',function(){
        var img_src=$image.attr("src");
        if(img_src==""){
            $('#my-alert').modal('open');
            return false;
        }
        var url=$(this).attr("url");
        var canvas=$("#image").cropper('getCroppedCanvas');
        var cv_img = document.createElement("canvas");
        var ctx = cv_img.getContext("2d");
        var x = canvas.width/2;
        var y = canvas.height/2;
        cv_img.width =canvas.width;
        cv_img.height =canvas.width;
        ctx.clearRect(0,0, canvas.width, canvas.height);//先清掉画布上的内容
        ctx.translate(x,y);//将绘图原点移到画布中点
        if(Orientation == 6) {
            ctx.rotate(Math.PI/2);
        } else if(Orientation == 3) {
            ctx.rotate(-Math.PI/2);
        } else if(Orientation == 8) {
            ctx.rotate(Math.PI/1);
        }
        ctx.translate(-x,-y);//将画布原点移动
        ctx.drawImage(canvas,0,0);
        var data=cv_img.toDataURL("image/jpeg");
        $("#pic_img").attr("src",data)
        $('#new_pic').val($("#pic_img").attr("src"));
        $('#doc-modal-1').modal('close');
    });
});
function rotateimgright() {
    $("#image").cropper('rotate', 90);
}
function rotateimgleft() {
    $("#image").cropper('rotate', -90);
}
function set_alert_info(content){
    $("#alert_content").html(content);
}</pre>

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持站长源码网。

文章由官网发布,如若转载,请注明出处:https://www.veimoz.com/1922
0 评论
424

发表评论

!