VueCropper 圖片裁剪組件在Vue項目中的實踐應用

VueCropper 圖片裁剪組件在Vue項目中的實踐應用

1. 組件介紹

VueCropper 是一個基于 Vue.js 的圖片裁剪組件,它提供了豐富的圖片裁剪功能,包括:

  • 圖片縮放、旋轉、移動
  • 固定比例裁剪
  • 高質量圖片輸出
  • 多種裁剪模式選擇

2. 安裝與引入

首先需要安裝 vue-cropper 依賴:

npm install vue-cropper --save

然后在 Vue 組件中引入:

import { VueCropper } from "vue-cropper";

3. 基本使用

3.1 組件注冊

components: {VueCropper,
},

3.2 模板中使用

<vue-cropper ref="cropper":img="cropImg":outputSize="option.outputSize":outputType="option.outputType":info="option.info":full="option.full":autoCropWidth="option.autoCropWidth":autoCropHeight="option.autoCropHeight":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":high="option.high":mode="option.mode">
</vue-cropper>

4. 配置選項詳解

在我們的項目中,使用了以下配置:

cropImg:"https://xxx.xxx.com/174539931549590675.png", // 這是需要裁剪的圖片的地址
option: {outputSize: 0.8, // 裁剪生成圖片的質量info: false, // 裁剪框的大小信息outputType: 'jpeg', // 裁剪生成圖片的格式canScale: true, // 圖片是否允許滾輪縮放autoCrop: true, // 是否默認生成截圖框autoCropWidth: window.innerWidth - 100 + 'px', // 默認生成截圖框寬度autoCropHeight: window.innerWidth - 100 + 'px', // 默認生成截圖框高度high: true, // 是否按照設備的dpr 輸出等比例圖片fixed: true, // 是否開啟截圖框寬高固定比例fixedNumber: [1, 1], // 截圖框的寬高比例full: true, // 是否輸出原圖比例的截圖canMoveBox: true, // 截圖框能否拖動original: false, // 上傳圖片按照原始比例渲染centerBox: true, // 截圖框是否被限制在圖片里面infoTrue: false, // true 為展示真實輸出圖片寬高 false 展示看到的截圖框寬高mode: '100% auto' // 圖片默認渲染方式
}

5. 核心功能實現

5.1 確認裁剪

    confirmCrop() {this.$refs.cropper.getCropData(async (data) => {// 將 base64 轉換為文件// 更新裁剪后的圖片this.cropImg = data;const file = this.dataURLtoFile(data, "cropped.jpg");// 更新上傳框的圖片this.fileList = [{file: file,content: data}];// 上傳處理await this.uploadBase64({ file: file });this.showCropper = false;});},

5.2 Base64轉文件

dataURLtoFile(dataurl, filename) {const arr = dataurl.split(",");const mime = arr[0].match(/:(.*?);/)[1];const bstr = atob(arr[1]);let n = bstr.length;const u8arr = new Uint8Array(n);while (n--) {u8arr[n] = bstr.charCodeAt(n);}return new File([u8arr], filename, { type: mime });
},// 上傳Base64數據async uploadBase64(file) {this.$toast.loading({message: '上傳中...',forbidClick: true,duration: 0});try {const formData = new FormData();formData.append("file", file.file);const res = await axios.post(global.SERVER_URL + "/base/common/file/upload",formData,{headers: {"Content-Type": "multipart/form-data",},});console.log(res.data.data);} catch (error) {this.$toast("上傳失敗,請重試");console.error(error);}},

6. 實際應用場景

在我們的"AI生成視頻"項目中,VueCropper 主要用于:

  1. 用戶頭像裁剪 :確保上傳的頭像符合比例要求
  2. 圖片預處理 :在上傳前對圖片進行裁剪優化
  3. 質量控制 :通過配置輸出質量減少圖片體積

請添加圖片描述

7. 問題記錄

問題 如果插件嵌套在彈窗中使用時 拖拽會出現很明顯的卡頓
解決 在彈窗組件上面增加 :lock-scroll="false" 即可解決

8. 總結

VueCropper 是一個功能強大且易于集成的圖片裁剪組件,通過合理的配置和樣式優化,可以很好地滿足項目中的圖片處理需求。在我們的項目中,它為用戶提供了良好的圖片裁剪體驗,同時也為后端處理減輕了壓力。

希望本文對你在Vue項目中使用VueCropper有所幫助!感謝閱讀!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92463.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92463.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92463.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

給同一個wordpress網站綁定多個域名的實現方法

在WordPress網站上綁定多個域名&#xff0c;可以通過以下幾種方法實現&#xff1a; 1. 修改wp-config.php文件 在wp-config.php文件中&#xff0c;找到define(‘WP_DEBUG’, false);&#xff0c;在其下方添加以下代碼&#xff1a; define(WP_SITEURL, http:// . $_SERVER[HT…

HarmonyOS分布式開發實戰:打造跨設備協同應用

&#x1f4d6; 文章目錄 第一章&#xff1a;HarmonyOS分布式架構揭秘第二章&#xff1a;跨設備協同的核心技術第三章&#xff1a;開發環境搭建與配置第四章&#xff1a;實戰項目&#xff1a;智能家居控制系統第五章&#xff1a;數據同步與狀態管理第六章&#xff1a;性能優化與…

用 Enigma Virtual Box 把 Qt 程序壓成單文件 EXE——從編譯、收集依賴到一鍵封包

關鍵詞&#xff1a;Qt、windeployqt、Enigma Virtual Box、單文件、綠色軟件 為什么要打成單文件&#xff1f; 傳統做法&#xff1a;用 windeployqt 把依賴拷進 release 目錄&#xff0c;發給用戶一個文件夾&#xff0c;文件又多又亂。理想做法&#xff1a;把整個目錄壓成一個…

unity中實現選中人物腳下顯示圓形標識且完美貼合復雜地形(如彈坑) 的效果

要實現人物腳下圓形 完美貼合復雜地形&#xff08;如彈坑&#xff09; 的效果&#xff0c;核心思路是 「動態生成貼合地面的 Mesh」 —— 即根據地面的高度場實時計算環形頂點的 Y 坐標&#xff0c;讓每個頂點都 “貼” 在地面上。核心邏輯&#xff1a;確定環形范圍&#xff1a…

引領GameFi 2.0新范式:D.Plan攜手頂級財經媒體啟動“龍珠創意秀”

在GameFi賽道尋求新突破的今天&#xff0c;一個名為Dragonverse Plan&#xff08;D.Plan&#xff09;的項目正以其獨特的經濟模型和宏大愿景&#xff0c;吸引著整個Web3社區的目光。據悉&#xff0c;D.Plan即將聯合中文區頂級加密媒體金色財經與非小號&#xff08;Feixiaohao&a…

通信算法之307:fpga之時序圖繪制

時序圖繪制軟件 一. 序言 在FPGA設計過程中&#xff0c;經常需要編寫設計文檔&#xff0c;其中&#xff0c;不可缺少的就是波形圖的繪制&#xff0c;可以直接截取Vivado或者Modelsim平臺實際仿真波形&#xff0c;但是往往由于信號雜亂無法凸顯重點。因此&#xff0c;通過相應軟…

計網學習筆記第3章 數據鏈路層(灰灰題庫)

題目 11 單選題 下列說法正確的是______。 A. 路由器具有路由選擇功能&#xff0c;交換機沒有路由選擇功能 B. 三層交換機具有路由選擇功能&#xff0c;二層交換機沒有路由選擇功能 C. 三層交換機適合異構網絡&#xff0c;二層交換機不適合異構網絡 D. 路由器適合異構網絡&…

SQL的LEFT JOIN優化

原sql&#xff0c;一個base表a,LEFT JOIN三個表抽數 SELECT ccu.*, ctr.*, om.*, of.* FROM ods.a ccu LEFT JOIN ods.b ctr ON ccu.coupon_code ctr.coupon_code AND ctr.is_deleted 0 LEFT JOIN ods.c om ON ctr.bill_code om.order_id AND om.deleted 0 LEFT JOIN ods.…

Redis 核心概念、命令詳解與應用實踐:從基礎到分布式集成

目錄 1. 認識 Redis 2. Redis 特性 2.1 操作內存 2.2 速度快 2.3 豐富的功能 2.4 簡單穩定 2.5 客戶端語言多 2.6 持久化 2.7 主從復制 2.8 高可用 和 分布式 2.9 單線程架構 2.9.1 引出單線程模型 2.9.2 單線程快的原因 2.10 Redis 和 MySQL 的特性對比 2.11 R…

【Day 18】Linux-DNS解析

目錄 一、DNS概念 1、概念和作用 2、域名解析類型 3、 軟件與服務 4、DNS核心概念 區域 記錄 5、查詢類型 6、分層結構 二、DNS操作 配置本機為DNS內網解析服務器 &#xff08;1&#xff09;修改主配置文件 &#xff08;2&#xff09;添加區域 正向解析區域&#xff1a; …

Python 中 OpenCV (cv2) 安裝與使用介紹

Python 中 OpenCV (cv2) 安裝與使用詳細指南 OpenCV (Open Source Computer Vision Library) 是計算機視覺領域最流行的庫之一。Python 通過 cv2 模塊提供 OpenCV 的接口。 一、安裝 OpenCV 方法 1&#xff1a;基礎安裝&#xff08;推薦&#xff09; # 安裝核心包&#xff0…

微軟WSUS替代方案

微軟WSUS事件回顧2025年7月10日&#xff0c;微軟最新確認Windows Server Update Services&#xff08;WSUS&#xff09;出現了問題&#xff0c;導致IT管理員無法正常同步和部署Windows更新。WSUS是允許管理員根據策略配置&#xff0c;將更新推送到特定計算機&#xff0c;并優化…

Minio 分布式集群安裝配置

目錄創建 mkdir -p /opt/minio/run && mkdir -p /etc/minio && mkdir -p /indata/disk_0/minio/datarun&#xff1a;啟動腳本及二進制文件目錄/etc/minio&#xff1a;配置文件目錄data&#xff1a;數據存儲目錄下載 minio wget https://dl.min.io/server/minio…

Spring Boot + ShardingSphere 實現分庫分表 + 讀寫分離實戰

&#x1f680; Spring Boot ShardingSphere 實現分庫分表 讀寫分離&#xff08;涵蓋99%真實場景&#xff09; &#x1f3f7;? 標簽&#xff1a;ShardingSphere、分庫分表、讀寫分離、MySQL 主從、Spring Boot 實戰 分庫分表 vs 讀寫分離 vs 主從配置與數據庫高可用架構區別 …

將普通用戶添加到 Docker 用戶組

這樣可以避免每次使用 Docker 命令時都需要 sudo。以下是具體步驟&#xff1a;1. 創建 Docker 用戶組&#xff08;如果尚未存在&#xff09; 默認情況下&#xff0c;安裝 Docker 時會自動創建 docker 用戶組。可以通過以下命令檢查&#xff1a; groupadd docker&#xff08;如果…

Scrapy(一):輕松爬取圖片網站內容?

目錄 一、CrawlSpider 簡介? 二、實戰案例&#xff1a;圖片網站爬取? 三、代碼解析&#xff1a;核心組件詳解? 類定義&#xff1a; 2.核心屬性&#xff1a;? 3.爬取規則&#xff08;Rules&#xff09;&#xff1a;? 4.數據提取方法&#xff08;parse_item&#xff09;…

使用 systemd 的原生功能來實現 Redis 的自動監控和重啟,而不是依賴額外的腳本最佳實踐方案

使用 systemd 的原生功能來實現 Redis 的自動監控和重啟&#xff0c;而不是依賴額外的腳本最佳實踐方案方案 1&#xff1a;配置 systemd 服務文件&#xff08;推薦&#xff09;1. 檢查/創建 Redis 的 systemd 服務文件2. 配置關鍵參數&#xff08;覆蓋配置示例&#xff09;3. 重…

Eclipse 代碼模板

Eclipse 代碼模板 引言 Eclipse 作為一款功能強大的集成開發環境&#xff08;IDE&#xff09;&#xff0c;深受廣大開發者的喜愛。在編程過程中&#xff0c;使用代碼模板可以大大提高開發效率&#xff0c;減少重復勞動。本文將詳細介紹 Eclipse 代碼模板的配置、使用方法以及一…

輸電線路防外破聲光預警裝置 | 防山火/防釣魚/防施工安全警示系統

在輸電網絡的安全保障中&#xff0c;外力破壞是一個不容忽視的問題&#xff0c;各類隱患可能對電力系統造成嚴重影響。TLKS-PMG-WP 輸電線路聲光防外破警示裝置在應對這類挑戰時&#xff0c;有著獨特的技術表現&#xff0c;下面從功能和技術參數兩方面進行詳細介紹。核心功能解…

STM32——STM32CubeMX

總&#xff1a;STM32——學習總綱 一、簡介 注意&#xff0c;非邏輯代碼。 可兼容不同系列的STM32Cube固件包。 STM32Cube前置知識鏈接&#xff1a; STM32——HAL庫 不可過多依賴&#xff0c;此工具只針對STM32芯片&#xff0c;類似英飛凌芯片無法配置。主要用于參考。 二、安…