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;类似英飞凌芯片无法配置。主要用于参考。 二、安…