搜尋
首頁web前端Vue.jsvue專案中藉助vue-cropper做圖片裁剪

vue專案中怎麼做圖片裁切?以下這篇文章跟大家介紹怎麼使用vue-cropper做圖片裁剪,希望給大家有幫助!

vue專案中藉助vue-cropper做圖片裁剪

因為專案需要,需要做圖片裁剪。先前的專案已經由cropper.js實作過,因為這次使用的是vue,所以採用了vue-cropper這個元件,使用起來很簡單,但坑也很多。 (學習影片分享:vue影片教學

一、安裝

#
npm install vue-cropper

##main.js

import VueCropper from 'vue-cropper'
Vue.use(VueCropper)

二、圖片裁切

vue專案中藉助vue-cropper做圖片裁剪

1、引入VueCropper元件,並設定相關的屬性。

<div    style="max-width:90%">
            <vueCropper
              @mouseenter.native="enter"
              @mouseleave.native="leave"
              ref="cropper"
              :img="uploadImg"
              :outputSize="option.size"
              :outputType="option.outputType"
              :info="true"
              :full="option.full"
              :canMove="option.canMove"
              :canMoveBox="option.canMoveBox"
              :original="option.original"
              :autoCrop="option.autoCrop"
              :fixed="option.fixed"
              :fixedNumber="option.fixedNumber"
              :centerBox="option.centerBox"
              :infoTrue="option.infoTrue"
              :fixedBox="option.fixedBox"
              style="background-image:none"
            ></vueCropper>
</div>
option: {
       info: true, // 裁剪框的大小信息
       outputSize: 0.8, // 裁剪生成图片的质量
       outputType: "jpeg", // 裁剪生成图片的格式
       canScale: false, // 图片是否允许滚轮缩放
       autoCrop: false, // 是否默认生成截图框
       fixedBox: false, // 固定截图框大小 不允许改变
       fixed: false, // 是否开启截图框宽高固定比例
       fixedNumber: [7, 5], // 截图框的宽高比例
       full: true, // 是否输出原图比例的截图
       canMove: false, //时候可以移动原图
       canMoveBox: true, // 截图框能否拖动
       original: false, // 上传图片按照原始比例渲染
       centerBox: false, // 截图框是否被限制在图片里面
       infoTrue: true // true 为展示真实输出图片宽高 false 展示看到的截图框宽高
     }

❗️預設的裁剪圖片的背景帶有賊醜的馬賽克,其實是它用了一張馬賽克的圖片做背景,去掉只需在VueCropper上設置去除背景圖片的樣式

style ="background-image:none".

2、上傳完成後滑鼠進入VueCropper即可以開始裁切

在VueCroper上設定

@mouseenter.native="enter "事件(⭐️元件上使用原生事件需要加上native關鍵字)

enter() {
 if (this.uploadImg == "") {
   return;
 }
 this.$refs.cropper.startCrop(); //开始裁剪
},

3、離開VueCropper即停止裁剪,得到裁剪圖片。

在VueCroper上設定

@mouseleave.native="leave"事件

leave() {
   this.$refs.cropper.stopCrop();//停止裁剪
   this.$refs.cropper.getCropData(data => { //获取截图的base64格式数据
     this.cutImg = data;
   });
   // this.$refs.cropper.getCropBlob(data => { //获取截图的Blob格式数据
   //   this.cutImg = data;
   // });
 },

我這裡是離開p就會裁剪,點擊裁剪按鈕後傳遞裁剪圖片,而不是點擊裁剪按鈕才裁剪,因為我點擊裁剪按鈕裁剪的話,拿到的圖片並沒有裁剪過,我也不知道為什麼,就想出了這個辦法。

vue-cropper圖片裁切問題

三、將截圖框回顯到原圖上

vue專案中藉助vue-cropper做圖片裁剪
基本原理:

this.$refs.cropper.getCropAxis() //获取截图框基于容器的坐标点 {x1: 174, x2: 131, y1: 86, y2: 58}
this.$refs.cropper.cropW  //截图框宽
this.$refs.cropper.cropH //截图框高

透過上面的方式取得截圖框的寬、高和基於容器的座標點,然後讓VueCropper的自動截取框顯示出來並設定自動截取框的大小和位置。

以姓名欄位為例:

{
          id: 1,
          name: "姓名",
          cropInfo: {
            width: 108, //this.$refs.cropper.cropW
            height: 56, //this.$refs.cropper.cropH 
            offsetX: 174, //this.$refs.cropper.getCropAxis().x1
            offsetY: 86  //this.$refs.cropper.getCropAxis().y1
}

1、在"姓名"el-card上設定enter事件

enterCard(refWord) {
      this.$refs.cropper.goAutoCrop();//重新生成自动裁剪框
      this.$nextTick(() => {
        // if cropped and has position message, update crop box
        //设置自动裁剪框的宽高和位置
        this.$refs.cropper.cropOffsertX = refWord.cropInfo.offsetX;
        this.$refs.cropper.cropOffsertY = refWord.cropInfo.offsetY;
        this.$refs.cropper.cropW = refWord.cropInfo.width;
        this.$refs.cropper.cropH = refWord.cropInfo.height;
      });
    }

2、在所有el-card外層的el-tabs上設定leave事件


leaveCard() {
      this.$refs.cropper.clearCrop(); //取消裁剪框
    }

❗️注意不要在el-card上設定leave事件,不然進行滑鼠移動到下一個el-card的時候會取消裁剪框又重新生成,導致頁面出現閃爍的現象。

四、其它

  • 將截圖框限制在圖片內:https://github.com/xyxiao001/vue-cropper/issues /429

    解決方案:centerBox設定為true,並且只有autoCrop=true時才會生效

  • 專案需要將裁剪框框出的位置資訊和裁剪框大小給後台,讓後台裁剪或進行OCR,但傳給後台後裁剪出來的圖片總是向右下角偏移:https://github.com/xyxiao001/vue-cropper/issues/386

    解決方案:圖片是縮放過的,傳遞position時,需要將position*scale.

  • 裁剪大部分圖片沒有問題,但是裁剪某些圖片時總是有偏差:https://github.com /xyxiao001/vue-cropper/issues/439

    解決方法: 原來預設的裁切圖片大小有限制,寬高最高為2000px,將這個值設定為了10000,問題解決.

vue專案中藉助vue-cropper做圖片裁剪

【相關影片教學推薦:

vuejs入門教學web前端入門

以上是vue專案中藉助vue-cropper做圖片裁剪的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:csdn。如有侵權,請聯絡admin@php.cn刪除
Netflix的前端:深入研究其技術堆棧Netflix的前端:深入研究其技術堆棧May 08, 2025 am 12:11 AM

Netflix的前端技術棧主要基於React和Redux。 1.React用於構建高性能的單頁面應用,通過組件化開發提升代碼重用性和維護性。 2.Redux用於狀態管理,確保狀態變化可預測和可追踪。 3.工具鏈包括Webpack、Babel、Jest和Enzyme,確保代碼質量和性能。 4.性能優化通過代碼分割、懶加載和服務端渲染實現,提升用戶體驗。

vue.js和前端:構建交互式用戶界面vue.js和前端:構建交互式用戶界面May 06, 2025 am 12:02 AM

Vue.js是一種漸進式框架,適用於構建交互性強的用戶界面。其核心功能包括響應式系統、組件化開發和路由管理。 1)響應式系統通過Object.defineProperty或Proxy實現數據監聽,自動更新界面。 2)組件化開發允許將界面拆分為可複用的模塊。 3)VueRouter支持單頁面應用,提升用戶體驗。

Vuejs的缺點是什麼?Vuejs的缺點是什麼?May 05, 2025 am 12:06 AM

Vue.js的主要缺點包括:1.生態系統相對較新,第三方庫和工具不如其他框架豐富;2.學習曲線在復雜功能上變得陡峭;3.社區支持與資源不如React和Angular廣泛;4.大型應用中可能遇到性能問題;5.版本升級與兼容性挑戰較大。

Netflix:揭開其前端框架Netflix:揭開其前端框架May 04, 2025 am 12:16 AM

Netflix使用React作為其前端框架。 1.React的組件化開發和虛擬DOM機制提高了性能和開發效率。 2.使用Webpack和Babel優化代碼構建和部署。 3.採用代碼分割、服務端渲染和緩存策略進行性能優化。

vue.js的前端開發:優勢和技術vue.js的前端開發:優勢和技術May 03, 2025 am 12:02 AM

Vue.js受歡迎的原因包括簡單易學、靈活性高和高效性能。 1)其漸進式框架設計適合初學者逐步學習。 2)組件化開發提高了代碼可維護性和團隊協作效率。 3)響應式系統和虛擬DOM提升了渲染性能。

vue.js vs.反應:易於使用和學習曲線vue.js vs.反應:易於使用和學習曲線May 02, 2025 am 12:13 AM

Vue.js更易用且學習曲線較平緩,適合初學者;React學習曲線較陡峭,但靈活性強,適合有經驗的開發者。 1.Vue.js通過簡單的數據綁定和漸進式設計易於上手。 2.React需要理解虛擬DOM和JSX,但提供更高的靈活性和性能優勢。

Vue.js vs. React:哪個框架適合您?Vue.js vs. React:哪個框架適合您?May 01, 2025 am 12:21 AM

Vue.js適合快速開發和小型項目,而React更適合大型和復雜的項目。 1.Vue.js簡單易學,適用於快速開發和小型項目。 2.React功能強大,適合大型和復雜的項目。 3.Vue.js的漸進式特性適合逐步引入功能。 4.React的組件化和虛擬DOM在處理複雜UI和數據密集型應用時表現出色。

VUE.JS與React:JavaScript框架的比較分析VUE.JS與React:JavaScript框架的比較分析Apr 30, 2025 am 12:10 AM

Vue.js和React各有優缺點,選擇時需綜合考慮團隊技能、項目規模和性能需求。 1)Vue.js適合快速開發和小型項目,學習曲線低,但深層嵌套對象可能導致性能問題。 2)React適用於大型和復雜應用,生態系統豐富,但頻繁更新可能導致性能瓶頸。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。