最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

cropper js基于vue的圖片裁剪上傳功能的實(shí)現(xiàn)代碼

 更新時(shí)間:2018年03月01日 11:14:33   作者:小雷雷哥哥  
這篇文章主要介紹了cropper js基于vue的圖片裁剪上傳功能的相關(guān)資料,需要的朋友可以參考下

前些日子做了一個(gè)項(xiàng)目關(guān)于vue項(xiàng)目需要頭像裁剪上傳功能,看了一篇文章,在此基礎(chǔ)上做的修改完成了這個(gè)功能,與大家分享一下。原文:http://www.fzitv.net/article/135719.htm

首先下載引入cropper js,

npm install cropper js --save

在需要的頁(yè)面引入:import Cropper from "cropper js"

html的代碼如下:

<template> 
 <div id="demo"> 
 <!-- 遮罩層 --> 
 <div class="container" v-show="panel"> 
 <div> 
  <img id="image" :src="url" alt="Picture"> 
 </div> 
 <button type="button" id="button" @click="commit">確定</button> 
 <button type="button"id="cancel" @click="cancel">取消</button> 
 </div> 
 <div style="padding:20px;"> 
 <div class="show"> 
  <div class="picture" :style="'backgroundImage:url('+headerImage+')'"> 
  </div> 
 </div> 
 <div style="margin-top:20px;text-align: left;"> 
  <input type="file" id="change" accept="image" @change="change"> 
  <label for="change"></label> 
 </div> 
 </div> 
 </div> 
</template> 

主要是js代碼,如下

1,data里面定好初始變量,綁定數(shù)據(jù),imgCropperData是我定義的判斷圖片格式的。

data() { 
 return { 
 headerImage: "", 
 picValue: "", 
 cropper: "", 
 croppable: false, 
 panel: false, 
 url: "", 
 imgCropperData: { 
 accept: "image/gif, image/jpeg, image/png, image/jpg" 
 } 
 }; 
 } 

2,在mounted里面初始換裁剪框

mounted() { 
 //初始化這個(gè)裁剪框 
 var self = this; 
 var image = document.getElementById("image"); 
 this.cropper = new Cropper(image, { 
 aspectRatio: 1, 
 viewMode: 1, 
 background: false, 
 zoomable: false, 
 ready: function() { 
 self.croppable = true; 
 } 
 }); 
 } 

3.methods的方法比較多,包括創(chuàng)建URL路徑,input框change事件,canvas畫(huà)圖,確定提交上傳。我還加了取消事件函數(shù),判斷上傳文件的類(lèi)型和大小。

methods: { 
 //取消上傳 
 cancel() { 
 this.panel = false; 
 var obj = document.getElementById('change') ; 
 obj.outerHTML=obj.outerHTML; 
 }, 
 //創(chuàng)建url路徑 
 getObjectURL(file) { 
 var url = null; 
 if (window.createObjectURL != undefined) { 
 // basic 
 url = window.createObjectURL(file); 
 } else if (window.URL != undefined) { 
 // mozilla(firefox) 
 url = window.URL.createObjectURL(file); 
 } else if (window.webkitURL != undefined) { 
 // webkit or chrome 
 url = window.webkitURL.createObjectURL(file); 
 } 
 return url; 
 }, 
 //input框change事件,獲取到上傳的文件 
 change(e) { 
 let files = e.target.files || e.dataTransfer.files; 
 if (!files.length) return; 
 let type = files[0].type; //文件的類(lèi)型,判斷是否是圖片 
 let size = files[0].size; //文件的大小,判斷圖片的大小 
 if (this.imgCropperData.accept.indexOf(type) == -1) { 
 alert("請(qǐng)選擇我們支持的圖片格式!"); 
 return false; 
 } 
 if (size > 5242880) { 
 alert("請(qǐng)選擇5M以?xún)?nèi)的圖片!"); 
 return false; 
 } 
 this.picValue = files[0]; 
 this.url = this.getObjectURL(this.picValue); 
 //每次替換圖片要重新得到新的url 
 if (this.cropper) { 
 this.cropper.replace(this.url); 
 } 
 this.panel = true; 
 }, 
 //確定提交 
 commit() { 
 this.panel = false; 
 var croppedCanvas; 
 var roundedCanvas; 
 if (!this.croppable) { 
 return; 
 } 
 // Crop 
 croppedCanvas = this.cropper.getCroppedCanvas(); 
 // Round 
 roundedCanvas = this.getRoundedCanvas(croppedCanvas); 
 this.headerImage = roundedCanvas.toDataURL(); 
 //上傳圖片 
 this.postImg(); 
 }, 
 //canvas畫(huà)圖 
 getRoundedCanvas(sourceCanvas) { 
 var canvas = document.createElement("canvas"); 
 var context = canvas.getContext("2d"); 
 var width = sourceCanvas.width; 
 var height = sourceCanvas.height; 
 canvas.width = width; 
 canvas.height = height; 
 context.imageSmoothingEnabled = true; 
 context.drawImage(sourceCanvas, 0, 0, width, height); 
 context.globalCompositeOperation = "destination-in"; 
 context.beginPath(); 
 context.arc( 
 width / 2, 
 height / 2, 
 Math.min(width, height) / 2, 
 0, 
 2 * Math.PI, 
 true 
 ); 
 context.fill(); 
 return canvas; 
 }, 
 //提交上傳函數(shù) 
 postImg() { 
 alert("上傳成功"); 
 //這邊寫(xiě)圖片的上傳 
 } 
 } 

css樣式代碼就不貼出來(lái)了,可以到GitHub上下載https://github.com/leileibrother/cropper-js-vue-。

總結(jié)

以上所述是小編給大家介紹的cropper js基于vue的圖片裁剪上傳功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 用戶(hù)代理字符串userAgent可實(shí)現(xiàn)的四個(gè)識(shí)別

    用戶(hù)代理字符串userAgent可實(shí)現(xiàn)的四個(gè)識(shí)別

    用戶(hù)代理字符串:navigator.userAgent ,本文給大家分享用戶(hù)代理字符串userAgent可實(shí)現(xiàn)的四個(gè)識(shí)別,需要的朋友可以參考下
    2015-09-09
  • 瀏覽器緩存技術(shù)實(shí)現(xiàn)淺析

    瀏覽器緩存技術(shù)實(shí)現(xiàn)淺析

    這篇文章主要為大家介紹了瀏覽器緩存技術(shù)實(shí)現(xiàn)淺析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 一文掌握new?Date()?方法

    一文掌握new?Date()?方法

    大家平時(shí)在開(kāi)發(fā)的時(shí)候有沒(méi)被new?Date()折磨過(guò),反正我是踩過(guò)很多坑,今天小編通過(guò)本文給大家詳細(xì)講解下new?date()方法應(yīng)用思考,感興趣的朋友一起看看吧
    2023-04-04
  • JS window對(duì)象簡(jiǎn)單操作完整示例

    JS window對(duì)象簡(jiǎn)單操作完整示例

    這篇文章主要介紹了JS window對(duì)象簡(jiǎn)單操作,結(jié)合完整實(shí)例形式分析了JavaScript Window對(duì)象各種常見(jiàn)提示框、彈出窗口及時(shí)間相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • Javascript實(shí)現(xiàn)字?jǐn)?shù)統(tǒng)計(jì)

    Javascript實(shí)現(xiàn)字?jǐn)?shù)統(tǒng)計(jì)

    現(xiàn)在流行的Twitter等微博客網(wǎng)站,有一個(gè)很好的用戶(hù)體驗(yàn),就是在文本框中輸入文字的時(shí)候,會(huì)自動(dòng)統(tǒng)計(jì)輸入的字符,并顯示用戶(hù)還能輸入的字符,在限制了140個(gè)字的微博客中,這樣的小提示可以很好的增強(qiáng)用戶(hù)體驗(yàn)。
    2015-07-07
  • JS組件Bootstrap Table表格多行拖拽效果實(shí)現(xiàn)代碼

    JS組件Bootstrap Table表格多行拖拽效果實(shí)現(xiàn)代碼

    這篇文章主要介紹了JS組件Bootstrap Table表格多行拖拽效果實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-12-12
  • js數(shù)組去重的hash方法

    js數(shù)組去重的hash方法

    對(duì)于JavaScript數(shù)組去除重復(fù)項(xiàng),現(xiàn)在有多種方法,其中一種是hash,本文主要對(duì)hash方法去除js數(shù)組重復(fù)項(xiàng)進(jìn)行介紹,下面就跟小編一起來(lái)看下吧
    2016-12-12
  • JavaScript中自定義swiper組件詳解

    JavaScript中自定義swiper組件詳解

    這篇文章主要介紹了微信小程序 swiper組件輪播圖詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下,希望能給你帶來(lái)幫助
    2021-08-08
  • 原生js實(shí)現(xiàn)圖片放大縮小計(jì)時(shí)器效果

    原生js實(shí)現(xiàn)圖片放大縮小計(jì)時(shí)器效果

    本文主要介紹了原生js實(shí)現(xiàn)圖片放大縮小計(jì)時(shí)器效果的示例代碼。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01
  • JavaScript前端實(shí)現(xiàn)GIF圖片循環(huán)播放

    JavaScript前端實(shí)現(xiàn)GIF圖片循環(huán)播放

    使用 img 加載 GIF 圖片,內(nèi)容只會(huì)播放一次,之后就會(huì)自動(dòng)暫停,所以這篇文章為大家介紹了如何使用JavaScript實(shí)現(xiàn)GIF圖片循環(huán)播放吧
    2025-03-03

最新評(píng)論

革吉县| 定安县| 龙陵县| 平谷区| 托克逊县| 武功县| 龙里县| 林州市| 洱源县| 日喀则市| 宜丰县| 罗江县| 蒙城县| 镇平县| 津南区| 汾阳市| 西华县| 大冶市| 安西县| 东台市| 遂溪县| 静宁县| 隆回县| 得荣县| 大安市| 长沙市| 绿春县| 隆昌县| 江阴市| 龙山县| 长岭县| 呼和浩特市| 江津市| 防城港市| 金坛市| 马尔康县| 高邑县| 武山县| 金寨县| 佛山市| 进贤县|