利用cropper插件裁剪本地圖片铸磅,然后將裁剪過(guò)后的base64圖片上傳至后臺(tái)

此插件的依賴項(xiàng)
<script src=".../jquery.js"></script> ( zepto || jquery 之一)
<link href=".../cropper.css" rel="stylesheet">
<script src=".../cropper.js"></script>

HTML部分

<div class="img_pop_up">
    <div class="self_img_pop_up">
        <div class="cut_img">
            <img id="imgTest" src="" alt="">
        </div>
        <div class="confirm_button">
            <div class="picture_div">
                <input type="file" id="fileTest">
                <span>選擇圖片</span>
            </div>
            <div class="rotate_div">
                <button class="rotate_left">向左旋轉(zhuǎn)</button>
                <button class="rotate_right">向右旋轉(zhuǎn)</button>
            </div>
            <button class="cancel_choose">取消</button>
            <button class="confirm_choose">確定</button>
        </div>
    </div>
</div>

CSS部分

   .img_pop_up {
      width     : 100%;
      height    : 100%;
      background: rgba(0,0,0,.5);
      z-index   : 999;
      position  : absolute;
      display   : none;

      .self_img_pop_up {
            background   : #fff;
            border-radius: 0.5rem;
            position     : absolute;
            top          : 0;
            right        : 0;
            bottom       : 0;
            left         : 0;
            width        : 96%;
            height       : 80%;
            margin       : auto;
            padding-top  : 1rem;

            .cut_img {
                  width : 94%;
                  height: 75%;
                  margin: 0 auto;

                  // img {
                  //   width : 100%;
                  //   height: 100%;
                  // }
            }

            .confirm_button {
                  width     : 100%;
                  height    : 25%;
                  text-align: center;
                  padding: 0 10%;

                  .rotate_div{
                        width: 100%;
                        height:100%;
                        overflow: hidden;
                        display: flex;
                        justify-content: space-between;
                        flex-wrap: wrap;
                        align-content: space-around;

                        .picture_div{
                          border       : none;
                          width        : 100%;
                          height       : 25%;
                          background   : #e0b268;
                          border-radius: 0.5rem;
                          font-size    : 1.5rem;
                          color        : #fff;
                          position: relative;
                          display: table;

                          span{
                            display: table-cell;
                            vertical-align: middle;

                          }

                          input{
                            position: absolute;
                            opacity: 0;
                            left:0;
                            top:0;
                            height: 100%;
                            width: 100%;
                          }
                        }

                        button {
                          border       : none;
                          width        : 48%;
                          height       : 25%;
                          background   : #e0b268;
                          border-radius: 0.5rem;
                          font-size    : 1.5rem;
                          color        : #fff;
                        }

                  }

            }
      }
}

JS部分

監(jiān)聽(tīng)上傳變化 配置cropper參數(shù),關(guān)于cropper參數(shù)缚够,網(wǎng)上可以自由搜到,此處不做太多贅述,(移動(dòng)端兼容關(guān)鍵參數(shù):cropBoxMovable :false,//是否允許拖動(dòng)裁剪框)

      // 監(jiān)聽(tīng)上傳變化
     $('#fileTest').live('change', function(ev) {
           let $file = $(this);
           let fileObj = $file[0];
           let windowURL = window.URL || window.webkitURL;
           let dataURL = null;
           if (!fileObj || !fileObj.files || !fileObj.files[0]) return;
           dataURL = windowURL.createObjectURL(fileObj.files[0]);
           $("#imgTest").attr('src', dataURL);
           $("#imgTest").cropper({
                aspectRatio: 1 / 1,
                viewMode : 1,
                rotatable: true,
                guides :false,//裁剪框虛線 默認(rèn)true有
                dragMode : "move",
                background : true,// 容器是否顯示網(wǎng)格背景
                movable : true,//是否能移動(dòng)圖片
                cropBoxMovable :false,//是否允許拖動(dòng)裁剪框
                cropBoxResizable :false,//是否允許拖動(dòng) 改變裁剪框大小
           });
           $("#imgTest").cropper('replace', dataURL);
    });

彈出框

    // 點(diǎn)擊彈出
    $('.self_logo_up').off().on('click', function() {
        $('.img_pop_up').css('display', 'block');
    })

向左旋轉(zhuǎn)按鈕

// 向左旋轉(zhuǎn)
 $('.rotate_left').off().on('click', function() {
      $("#imgTest").cropper('rotate', -45);
})

向右旋轉(zhuǎn)按鈕

// 向右旋轉(zhuǎn)
$('.rotate_right').off().on('click', function() {
    $("#imgTest").cropper('rotate', 45);
})

取消上傳按鈕

// 取消上傳圖片事件
  $('.cancel_choose').off().on('click', function() {
         $('.img_pop_up').css('display', 'none');
        clear();
 })

點(diǎn)擊確定按鈕將base64賦給img標(biāo)簽

    // 點(diǎn)擊確定
   $('.confirm_button .confirm_choose').off().on('click', function() {
          if ($("#imgTest").cropper('getCroppedCanvas') == null)  return;
          let base64 = $("#imgTest").cropper('getCroppedCanvas').toDataURL('base64', 0.3);
    $('.self_bg').remove();
    const logoImg = `<div class="self_bg" style="display:block;">
                          [圖片上傳失敗...(image-1fecd5-1512026520854)]
                      </div>`
    $('.self_logo_up').append(logoImg);

    // 清空
    $("#imgTest").cropper('reset');
    $('.img_pop_up').css('display', 'none');
    clear();
});

希望對(duì)你有所幫助!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末闻镶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子丸升,更是在濱河造成了極大的恐慌铆农,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狡耻,死亡現(xiàn)場(chǎng)離奇詭異墩剖,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)夷狰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門岭皂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人沼头,你說(shuō)我怎么就攤上這事爷绘。” “怎么了进倍?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵土至,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我猾昆,道長(zhǎng)陶因,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任垂蜗,我火速辦了婚禮楷扬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘么抗。我一直安慰自己毅否,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布蝇刀。 她就那樣靜靜地躺著螟加,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捆探,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天然爆,我揣著相機(jī)與錄音,去河邊找鬼黍图。 笑死曾雕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的助被。 我是一名探鬼主播剖张,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼揩环!你這毒婦竟也來(lái)了搔弄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤丰滑,失蹤者是張志新(化名)和其女友劉穎顾犹,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體褒墨,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡炫刷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了郁妈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浑玛。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖圃庭,靈堂內(nèi)的尸體忽然破棺而出锄奢,到底是詐尸還是另有隱情,我是刑警寧澤剧腻,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布拘央,位于F島的核電站,受9級(jí)特大地震影響书在,放射性物質(zhì)發(fā)生泄漏灰伟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一儒旬、第九天 我趴在偏房一處隱蔽的房頂上張望栏账。 院中可真熱鬧,春花似錦栈源、人聲如沸挡爵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)茶鹃。三九已至涣雕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間闭翩,已是汗流浹背挣郭。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留疗韵,地道東北人兑障。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蕉汪,于是被迫代替她去往敵國(guó)和親流译。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容