中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用cropper.js和exif.js實現頭像上傳縮放裁剪旋轉

發布時間:2022-02-24 09:17:30 來源:億速云 閱讀:126 作者:iii 欄目:開發技術

本篇內容主要講解“怎么用cropper.js和exif.js實現頭像上傳縮放裁剪旋轉”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么用cropper.js和exif.js實現頭像上傳縮放裁剪旋轉”吧!

做了一個頭像上傳的小功能,同時處理了ios豎著拍照圖片旋轉的問題。cropper.js(注意:cropper壓縮版的js在手機版版縮放圖片會有黑屏和圖片飛了的bug,所以建議引入開發版本的cropper)依賴jquery,exif是用來獲取拍照信息的,用于修復ios豎著拍照旋轉的問題,我用的是amazeui框架,我在文件中也引入。

這是html文件

<!doctype html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>cropper圖片裁剪縮放</title>
    <link rel="stylesheet" href="css/amazeui.min.css">
    <link rel="stylesheet" href="css/cropper.css">
    <link rel="stylesheet" href="css/amazeui.cropper.css">
</head>
<body>
    <div class="am-form-group">
        <label>logo</label>
        <div class="am-cf">
            <a href="javascript:;" id="up-img-touch" data-am-modal="{target: '#doc-modal-1'}">
                <img src="picture-2.jpg" id="pic_img" >
                <input type="hidden" name="new_pic" id="new_pic" value="">
            </a>
        </div>
    </div>
    <!--圖片上傳框-->
    <div class="am-popup up-frame-bj " id="doc-modal-1">
        <div class="am-modal-dialog up-frame-parent up-frame-radius">
            <div class="header_check header_setting">
                <a href="javascript:;" class="iconfont" data-am-modal-close>關閉</a>
                <h2>上傳</h2>
            </div>
            <div class="up-frame-body">
                <div class="up-pre-main am-cf" >
                    <div class="up-pre-before up-frame-radius">
                        <img alt="" src="" id="image">
                    </div>
                </div>
                <div class="upload_btn am-cf">
                    <div class="am-fl am-form-file">
                        <button type="button" class="am-btn">上傳圖片</button>
                        <input type="file" id="inputImage">
                    </div>
                    <div class="rotateimg">
                        <span οnclick="rotateimgleft()">左</span>
                        <span οnclick="rotateimgright()">右</span>
                    </div>
                    <div class="am-fr">
                        <button type="button" class="am-btn"  id="up-btn-ok" url="admin/user/upload.action">確定</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
<script src="js/jquery.min.js" charset="utf-8"></script>
<script src="js/amazeui.min.js" charset="utf-8"></script>
<script src="js/cropper.js" charset="utf-8"></script>
<script src="js/exif.js" charset="utf-8"></script>
<script src="js/custom_up_img.js" charset="utf-8"></script>
</html>

這是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);
}

到此,相信大家對“怎么用cropper.js和exif.js實現頭像上傳縮放裁剪旋轉”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

连州市| 海林市| 修武县| 揭阳市| 肥城市| 塔河县| 瑞丽市| 仙游县| 平塘县| 南京市| 达州市| 嵊州市| 平武县| 巴林右旗| 大渡口区| 阿拉善右旗| 古丈县| 浦北县| 东乌珠穆沁旗| 班玛县| 阜平县| 贵溪市| 河南省| 肇庆市| 芒康县| 新津县| 莒南县| 龙游县| 怀来县| 丘北县| 信丰县| 金山区| 时尚| 平顶山市| 昌图县| 油尖旺区| 龙山县| 都安| 胶州市| 楚雄市| 和林格尔县|