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

cropperjs實(shí)現(xiàn)裁剪圖片功能

 更新時(shí)間:2022年02月23日 17:03:05   作者:zyhzyh1120  
這篇文章主要為大家詳細(xì)介紹了cropperjs實(shí)現(xiàn)裁剪圖片功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了cropperjs實(shí)現(xiàn)裁剪圖片功能的具體代碼,供大家參考,具體內(nèi)容如下

cropperjs (裁剪圖片)

vue版本

// 下載
// npm install cropperjs -save

// 使用
//1.0 引入?
import Cropper from 'cropperjs'

// 2.0初始化裁剪框
?? ?data(){
?? ??? ?return{
?? ??? ??? ?croppable: false // 控制上傳后的顯隱
?? ??? ?}
?? ?},
?? ?
?? ?methods:{
?? ??? ?var _this= this;
?? ??? ?var image = document.getElementById('image');
?? ??? ?this.cropper = new Cropper(image, {
?? ? ? ? ? ?aspectRatio: 1,
?? ? ? ? ? ?viewMode: 1,
?? ? ? ? ? ?background:false,
?? ? ? ? ? ?zoomable:false,
?? ? ? ? ? ?ready: function () {
?? ? ? ? ? ? ?_this.croppable = true;
?? ? ? ? ? ?}
?? ? ? ?});
?? ?}

jq版本

<!--必須引入 jquery.min.js , cropper.min.js?
?? ?樣式引入 css/cropper.min.css css/ImgCropping.css-->
<link rel="stylesheet" href="css/cropper.min.css" >
<link rel="stylesheet" href="css/ImgCropping.css" >
<body>
<button id="replaceImg" class="l-btn">選擇圖片</button>
<div style="width: 320px;height: 320px;border: solid 1px #555;padding: 5px;margin-top: 10px">
? ? <img id="finalImg" src="" width="100%"> <!-- 預(yù)覽圖,一開始為空-->
</div>
<!--圖片裁剪框 start-->
<div style="display: none" class="tailoring-container">
? ? <div class="black-cloth" onClick="closeTailor(this)"></div>
? ? <div class="tailoring-content">
? ? ? ?<div class="tailoring-content-one">
? ? ? ? ? <label title="上傳圖片" for="chooseImg" class="l-btn choose-btn">
? ? ? ? ? ? ?<input type="file" accept="image/jpg,image/jpeg,image/png" name="file" id="chooseImg" class="hidden" onChange="selectImg(this)">選擇圖片
? ? ? ? ? </label>
? ? ? ?<div class="close-tailoring" ?onclick="closeTailor(this)">×</div>
? ? ? ?</div>
? ? ? ? ? ?<div class="tailoring-content-two">
? ? ? ? ? ? ? <div class="tailoring-box-parcel">
? ? ? ? ? ? ? ? ? <img id="tailoringImg" >
? ? ? ? ? ? ? </div>
? ? ? ? ? ? ? <div class="preview-box-parcel">
? ? ? ? ? ? ? ? ?<p>圖片預(yù)覽:</p>
? ? ? ? ? ? ? ? ?<div class="square previewImg"></div>
? ? ? ? ? ? ? ? ?<!-- <div class="circular previewImg"></div> -->
? ? ? ? ? ? ? </div>
? ? ? ? ? ?</div>
? ? ? ? ? ?<div class="tailoring-content-three">
? ? ? ? ? ? ? ?<button class="l-btn cropper-reset-btn">復(fù)位</button>
? ? ? ? ? ? ? ?<button class="l-btn cropper-rotate-btn">旋轉(zhuǎn)</button>
? ? ? ? ? ? ? ?<button class="l-btn cropper-scaleX-btn">換向</button>?
? ? ? ? ? ?</div>
? ? ? <button class="l-btn sureCut" id="sureCut">確定</button>
? ?</div>
</div>
</body>
<!--圖片裁剪框 end-->
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/cropper.min.js"></script>
<script>
?? ?//彈出框水平垂直居中
? ? (window.onresize = function () {
? ? ? ? var win_height = $(window).height();
? ? ? ? var win_width = $(window).width();
? ? ? ? if (win_width <= 768){
? ? ? ? ? ? $(".tailoring-content").css({
? ? ? ? ? ? ? ? "top": (win_height - $(".tailoring-content").outerHeight())/2,
? ? ? ? ? ? ? ? "left": 0
? ? ? ? ? ? });
? ? ? ? }else{
? ? ? ? ? ? $(".tailoring-content").css({
? ? ? ? ? ? ? ? "top": (win_height - $(".tailoring-content").outerHeight())/2,
? ? ? ? ? ? ? ? "left": (win_width - $(".tailoring-content").outerWidth())/2
? ? ? ? ? ? });
? ? ? ? }
? ? })();

? ? //彈出圖片裁剪框
? ? $("#replaceImg").on("click",function () {
? ? ? ? $(".tailoring-container").toggle();
? ? });
? ??
? ? //圖像上傳
? ? function selectImg(file) {
? ? ? ? if (!file.files || !file.files[0]){
? ? ? ? ? ? return;
? ? ? ? }
? ? ? ? var reader = new FileReader();
? ? ? ? reader.onload = function (evt) {
? ? ? ? ? ? var replaceSrc = evt.target.result;
? ? ? ? ? ? //更換cropper的圖片
? ? ? ? ? ? $('#tailoringImg').cropper('replace', replaceSrc,false); /**默認(rèn)false,適應(yīng)高度,不失真 */
? ? ? ? }
? ? ? ? reader.readAsDataURL(file.files[0]);
? ? ? ? // console.log(file);
? ? }
? ??
? ? //cropper圖片裁剪
? ? $('#tailoringImg').cropper({
? ? ? ? aspectRatio: 16/9,//默認(rèn)比例
? ? ? ? preview: '.previewImg',//預(yù)覽視圖
? ? ? ? guides: false, ??? ?//裁剪框的虛線(九宮格)
? ? ? ? autoCropArea: 0.8, ?//0-1之間的數(shù)值,定義自動(dòng)剪裁區(qū)域的大小,默認(rèn)0.8
? ? ? ? movable: false, ?? ?//是否允許移動(dòng)圖片
? ? ? ? dragCrop: false, ??? ?//是否允許移除當(dāng)前的剪裁框,并通過(guò)拖動(dòng)來(lái)新建一個(gè)剪裁框區(qū)域
? ? ? ? movable: true, ??? ?//是否允許移動(dòng)剪裁框
? ? ? ? resizable: true, ??? ?//是否允許改變裁剪框的大小
? ? ? ? zoomable: false, ??? ?//是否允許縮放圖片大小
? ? ? ? mouseWheelZoom: false, ?//是否允許通過(guò)鼠標(biāo)滾輪來(lái)縮放圖片
? ? ? ? touchDragZoom: true, //是否允許通過(guò)觸摸移動(dòng)來(lái)縮放圖片
? ? ? ? rotatable: true, ??? ?//是否允許旋轉(zhuǎn)圖片
? ? ? ? crop: function(e) {
? ? ? ? ? ? // 輸出結(jié)果數(shù)據(jù)裁剪圖像。
? ? ? ? ? ? // console.log(e);
? ? ? ? }
? ? });
? ??
? ? ?//旋轉(zhuǎn)
? ? ?$(".cropper-rotate-btn").on("click",function () {
? ? ? ? ?$('#tailoringImg').cropper("rotate", 45);
? ? ?});
? ? ?//復(fù)位
? ? ?$(".cropper-reset-btn").on("click",function () {
? ? ? ? $('#tailoringImg').cropper("reset");
? ? ?});
? ? ?//換向
? ? ?var flagX = true;
? ? ?$(".cropper-scaleX-btn").on("click",function () {
? ? ? ? ?if(flagX){
? ? ? ? ? ? ?$('#tailoringImg').cropper("scaleX", -1);
? ? ? ? ? ? ?flagX = false;
? ? ? ? ?}else{
? ? ? ? ? ? ?$('#tailoringImg').cropper("scaleX", 1);
? ? ? ? ? ? ?flagX = true;
? ? ? ? ?}
? ? ? ? ?flagX != flagX;
? ? ?});

? ? //裁剪后的處理
? ? $("#sureCut").on("click",function () {
? ? ? ? if ($("#tailoringImg").attr("src") == null ){
? ? ? ? ? ? return false;
? ? ? ? }else{
? ? ? ? ? ? var cas = $('#tailoringImg').cropper('getCroppedCanvas');//獲取被裁剪后的canvas
? ? ? ? ? ? var base64url = cas.toDataURL('image/png'); //轉(zhuǎn)換為base64地址形式
? ? ? ? ? ? $("#finalImg").prop("src",base64url);//顯示為圖片的形式
? ? ? ? ? ? // 將base64轉(zhuǎn)換成file對(duì)象
? ? ? ? ? ? var src = dataURLtoFile(base64url);
? ? ? ? ? ? console.log(base64url);
? ? ? ? ? ? console.log(src);
? ? ? ? ? ? closeTailor(); //關(guān)閉裁剪框
? ? ? ? }
? ? });
? ? //關(guān)閉裁剪框
? ? function closeTailor() {
? ? ? ? $(".tailoring-container").toggle();
? ? }
? ??
? ? // 轉(zhuǎn)files
? ? function dataURLtoFile (dataurl, filename = 'file') {
? ? let arr = dataurl.split(',')
? ? let mime = arr[0].match(/:(.*?);/)[1]
? ? let suffix = mime.split('/')[1]
? ? let bstr = atob(arr[1])
? ? let n = bstr.length
? ? let u8arr = new Uint8Array(n)
? ? while (n--) {
? ? ?? ?u8arr[n] = bstr.charCodeAt(n)
? ? }
? ? ?? ?return new File([u8arr], `${filename}.${suffix}`, {type: mime})
? ? }
</script>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • ES6基礎(chǔ)之展開語(yǔ)法(Spread syntax)

    ES6基礎(chǔ)之展開語(yǔ)法(Spread syntax)

    這篇文章主要介紹了ES6基礎(chǔ)之展開語(yǔ)法(Spread syntax),主要介紹了擴(kuò)展語(yǔ)法的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • JS實(shí)現(xiàn)根據(jù)當(dāng)前文字選擇返回被選中的文字

    JS實(shí)現(xiàn)根據(jù)當(dāng)前文字選擇返回被選中的文字

    這篇文章主要介紹JS如何實(shí)現(xiàn)根據(jù)當(dāng)前文字選擇返回被選中的文字,需要的朋友可以參考下
    2014-05-05
  • JavaScript將頁(yè)面表格導(dǎo)出為Excel的具體實(shí)現(xiàn)

    JavaScript將頁(yè)面表格導(dǎo)出為Excel的具體實(shí)現(xiàn)

    如何將頁(yè)面表格導(dǎo)出為Excel,這在日常工作中很常見,下面為大家詳細(xì)的介紹下使用JavaScript是如何實(shí)現(xiàn)的
    2013-12-12
  • JavaScript中的偏函數(shù)你理解了嗎

    JavaScript中的偏函數(shù)你理解了嗎

    JavaScript中的偏函數(shù)(Partial?Function)是指一個(gè)函數(shù),它是由另一個(gè)函數(shù)通過(guò)固定一些參數(shù)而得到的,從而產(chǎn)生了一個(gè)新的函數(shù),本文主要來(lái)和大家聊聊偏函數(shù)的原理與使用,希望對(duì)大家有所幫助
    2023-05-05
  • js繪制圓形和矩形的方法

    js繪制圓形和矩形的方法

    這篇文章主要介紹了js繪制圓形和矩形的方法,涉及javascript鼠標(biāo)事件及頁(yè)面元素樣式的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • JS實(shí)現(xiàn)一次性彈窗的方法【刷新后不彈出】

    JS實(shí)現(xiàn)一次性彈窗的方法【刷新后不彈出】

    這篇文章主要介紹了JS實(shí)現(xiàn)一次性彈窗的方法,可實(shí)現(xiàn)一次性彈出,刷新后不彈出的功能,涉及JS窗口操作的相關(guān)技巧,需要的朋友可以參考下
    2016-12-12
  • JS實(shí)現(xiàn)縱向輪播圖(初級(jí)版)

    JS實(shí)現(xiàn)縱向輪播圖(初級(jí)版)

    這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)縱向輪播圖的初級(jí)版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • ECharts入門教程

    ECharts入門教程

    ECharts 是一個(gè)使用JavaScript實(shí)現(xiàn)的開源可視化庫(kù),涵蓋各行業(yè)圖表,滿足各種需求。這篇文章介紹了ECharts的基礎(chǔ)知識(shí),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 微信小程序使用echarts獲取數(shù)據(jù)并生成折線圖

    微信小程序使用echarts獲取數(shù)據(jù)并生成折線圖

    這篇文章主要介紹了微信小程序使用echarts獲取數(shù)據(jù)并生成折線圖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • splitChunks精細(xì)控制代碼分割降低包大小

    splitChunks精細(xì)控制代碼分割降低包大小

    這篇文章主要為大家介紹了如何使用splitChunks精細(xì)控制代碼分割來(lái)實(shí)現(xiàn)降低包大小的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07

最新評(píng)論

恩施市| 通州市| 淅川县| 永年县| 鄂州市| 安丘市| 体育| 黄陵县| 将乐县| 泗水县| 韶关市| 土默特右旗| 江川县| 巴彦淖尔市| 柏乡县| 徐州市| 如东县| 伊吾县| 陇西县| 蒙自县| 太和县| 桓台县| 温宿县| 福州市| 新竹县| 荥经县| 临泉县| 南部县| 嘉荫县| 隆昌县| 广元市| 永德县| 青田县| 修文县| 东乌| 汨罗市| 那坡县| 调兵山市| 玉龙| 阳春市| 田阳县|