vue-cropper裁剪图片 vue

效果图
1.配置环境
npm install vue-cropper
2.代码
<template><div class="cropper-content"><div class="cropper-box"><div class="cropper"><vue-cropper ref="cropper" :img="option.img" :outputSize="option.outputSize" :outputType="option.outputType":info="option.info" :canScale="option.canScale" :autoCrop="option.autoCrop":autoCropWidth="option.autoCropWidth" :autoCropHeight="option.autoCropHeight" :fixed="option.fixed":fixedNumber="option.fixedNumber" :full="option.full" :fixedBox="option.fixedBox" :canMove="option.canMove":canMoveBox="option.canMoveBox" :original="option.original" :centerBox="option.centerBox":height="option.height" :infoTrue="option.infoTrue" :maxImgSize="option.maxImgSize" :enlarge="option.enlarge":mode="option.mode" @realTime="realTime" @imgLoad="imgLoad"></vue-cropper></div><!--底部操作工具按钮--><div class="footer-btn"><div class="scope-btn"><label class="btn" for="uploads">选择图片</label><input type="file" id="uploads" style="position:absolute; clip:rect(0 0 0 0);"accept="image/png, image/jpeg, image/gif, image/jpg" @change="selectImg($event)"><el-button size="mini" type="danger" plain icon="el-icon-zoom-in" @click="changeScale(1)">放大</el-button><el-button size="mini" type="danger" plain icon="el-icon-zoom-out" @click="changeScale(-1)">缩小</el-button><el-button size="mini" type="danger" plain @click="rotateLeft">↺ 左旋转</el-button><el-button size="mini" type="danger" plain @click="rotateRight">↻ 右旋转</el-button></div><div class="upload-btn"><el-button size="mini" type="success" @click="uploadImg('blob')">裁剪完毕 <i class="el-icon-upload"></i></el-button></div></div></div><!--预览效果图--><div class="show-preview"><div :style="previews.div" class="preview"><img :src="previews.url" :style="previews.img"></div></div></div>
</template><script>import {VueCropper} from 'vue-cropper'export default {name: "CropperImage",components: {VueCropper},props: ['Name'],data() {return {name: this.Name,previews: {},option: {img: '', //裁剪图片的地址outputSize: 1, //裁剪生成图片的质量(可选0.1 - 1)outputType: 'jpeg', //裁剪生成图片的格式(jpeg || png || webp)info: true, //图片大小信息canScale: true, //图片是否允许滚轮缩放autoCrop: true, //是否默认生成截图框autoCropWidth: 160, //默认生成截图框宽度autoCropHeight: 90, //默认生成截图框高度fixed: true, //是否开启截图框宽高固定比例fixedNumber: [1.77777, 1], //截图框的宽高比例full: false, //false按原比例裁切图片,不失真fixedBox: true, //固定截图框大小,不允许改变canMove: false, //上传图片是否可以移动canMoveBox: true, //截图框能否拖动original: false, //上传图片按照原始比例渲染centerBox: false, //截图框是否被限制在图片里面height: true, //是否按照设备的dpr 输出等比例图片infoTrue: false, //true为展示真实输出图片宽高,false展示看到的截图框宽高maxImgSize: 3000, //限制图片最大宽度和高度enlarge: 1, //图片根据截图框输出比例倍数mode: '100%' //图片默认渲染方式}};},methods: {//初始化函数imgLoad(msg) {console.log("工具初始化函数=====" + msg)},//图片缩放changeScale(num) {num = num || 1this.$refs.cropper.changeScale(num)},//向左旋转rotateLeft() {this.$refs.cropper.rotateLeft()},//向右旋转rotateRight() {this.$refs.cropper.rotateRight()},//实时预览函数realTime(data) {// console.log('实时预览图片的data:' + data);// console.log(data);this.previews = data},//选择图片selectImg(e) {let file = e.target.files[0]if (!/\.(jpg|jpeg|png|JPG|PNG)$/.test(e.target.value)) {this.$message({message: '图片类型要求:jpeg、jpg、png',type: "error"});return false}//转化为bloblet reader = new FileReader()reader.onload = (e) => {let dataif (typeof e.target.result === 'object') {data = window.URL.createObjectURL(new Blob([e.target.result]))} else {data = e.target.result}this.option.img = data //将创建的blob图片链接保存到数据里面,跟正常图片一样}//转化为base64reader.readAsDataURL(file)},//上传图片uploadImg(type) {let _this = this;if (type === 'blob') {//获取截图的blob数据this.$refs.cropper.getCropBlob((file) => {//得到裁剪以后的图片文件,方便使用this.$refs.cropper.getCropData((base64) => {//得到裁剪以后的base64图片,方便使用alert('裁剪完毕,请看代码里面的uploadImg函数里面教你的使用方法,懒狗记得看') //如果你想使用file二进制文件上传!那么请用11111111里面的代码,尤其是formData这样的上传格式,否则上传失败//1111111111111111111111111111111111111111111111111111111111111111111111111// let formData = new FormData();// formData.append('file',data,"DX.jpg")// let {data: res} = await _this.$http.post('/api/file/imgUpload', formData)//1111111111111111111111111111111111111111111111111111111111111111111111111111//如果你用base64那用请用22222222//2222222222222222222222222222222222222222222222222222222222222222222//就正常post上传就行,这样都不会啊//22222222222222222222222222222222222222222222222222222222222222222})})}},},}
</script><style scoped lang="less">.cropper-content {display: flex;display: -webkit-flex;justify-content: flex-end;.cropper-box {flex: 1;width: 100%;.cropper {width: auto;height: 300px;}}.show-preview {flex: 1;-webkit-flex: 1;display: flex;display: -webkit-flex;justify-content: center;.preview {overflow: hidden;border: 1px solid #67c23a;background: #cccccc;}}}.footer-btn {margin-top: 30px;display: flex;display: -webkit-flex;justify-content: flex-end;.scope-btn {display: flex;display: -webkit-flex;justify-content: space-between;padding-right: 10px;}.upload-btn {flex: 1;-webkit-flex: 1;display: flex;display: -webkit-flex;justify-content: center;}.btn {outline: none;display: inline-block;line-height: 1;white-space: nowrap;cursor: pointer;-webkit-appearance: none;text-align: center;-webkit-box-sizing: border-box;box-sizing: border-box;outline: 0;-webkit-transition: .1s;transition: .1s;font-weight: 500;padding: 8px 15px;font-size: 12px;border-radius: 3px;color: #fff;background-color: #409EFF;border-color: #409EFF;margin-right: 10px;}}
</style>
相关文章:
vue-cropper裁剪图片 vue
效果图 1.配置环境 npm install vue-cropper 2.代码 <template><div class"cropper-content"><div class"cropper-box"><div class"cropper"><vue-cropper ref"cropper" :img"option.img" :…...
算法-卡尔曼滤波之基本数学的概念
1.均值 定义:均值是一组数据中所有数值的总和除以数据的数量。均值是数据的中心趋势的一种度量,通常用符号 xˉ 表示。 :对于包含 n 个数据的数据集 {𝑥1,𝑥2,...,𝑥𝑛},均值 xˉ 计…...
NeoVim配置文件基本的
init.lua 文件 require(options) require(keymaps) require(plugins) require(colorscheme) require(lsp)-- 插件 require("config.lualine") require("config.nvim-tree") require("config.treesitter")~\lua\plugins.lua 文件 local lazypa…...
Qt学习笔记1.3.4 QtCore-Qt资源系统
文章目录 资源收集文件(.qrc)外部二进制资源内编译(compiled-in)资源压缩使用应用程序中的资源使用库中的资源 Qt资源系统是一种 独立于平台的机制,用于在应用程序的可执行文件中存储二进制文件。如果您的应用程序总是需要一组特定的文件(图标、翻译文件等)&#x…...
同城组局同城活动找搭子小程序JAVA源码面芽组局的实现方案
功能概述 基于微信小程序开发的一款软件,支持用户动态发布、私信聊天关注、礼物充值打赏、发起活动组局、用户报名参与、支持商家入驻,对接广告功能等。 活动发布:用户可以在平台上发布各种类型的活动,如户外徒步、音乐会观赏、…...
Unable to locate the .NET SDK
问题描述: vs2019 加载项目时,提示如下: Unable to locate the .NET SDK as specified by global.json, please check that the specified version is installed. 项目中没有globan找al.json 文件 先使用: dotnet --list-sdks 命…...
C++STL初阶(1):string的使用及初阶原理
此文作为学习stl的笔记,许多普及、概念性的知识点将不再罗列(如stl的发展、背景等) 便于读者作为复习等方法了解。 0.STL简介(笔记向) STL不是祖师爷本贾尼实现的,是在惠普实验室中实现的。其作为一个数据结…...
Day41-Java基础之反射和动态代理
1. 反射 1.1 反射的概述: 专业的解释(了解一下): 是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法; 对于任意一个对象,都能够调用它的任意属性和方法ÿ…...
Tomcat的实现
在一台电脑上启动tomcat,tomcat是server,即服务器。服务器只会被实例化一次,tomcat这只猫就是服务器。服务器下包含多个子节点服务,即service,顾名思义就是对外提供服务。服务器通常只有一个服务,默认是卡特…...
RK3576 Camera:资源介绍
RK3576是RK今年上市的中高端旗舰芯片,定位弱于RK3588。这篇文章主要分享一下RK3576这颗主控芯片的camera资源。 (1)RK3576 camera资源 ①RK3576 camera硬件框图 RK3576的camera硬件框图如图所示,拥有一路4lane的DCPHYÿ…...
Symfony DomCrawler库在反爬虫应对中的应用
在当今信息爆炸的时代,互联网上的数据量巨大,但这也带来了一些问题,比如恶意爬虫可能会对网站造成严重的影响,导致资源浪费和服务不稳定。为了解决这个问题,许多网站采取了反爬虫策略。Symfony DomCrawler库是一个强大…...
1Panel应用推荐:Uptime Kuma
1Panel(github.com/1Panel-dev/1Panel)是一款现代化、开源的Linux服务器运维管理面板,它致力于通过开源的方式,帮助用户简化建站与运维管理流程。为了方便广大用户快捷安装部署相关软件应用,1Panel特别开通应用商店&am…...
传输文件协议FTP与LFTP
目录 一.简介 二. FTP基础 主动模式(Active Mode): 被动模式(Passive Mode): 三. Vsftp 服务器简介 四. Vsftpd配置 1. 安装vsftpd(ftp服务端) 2.编辑配置文件 (…...
expdp和impdp 实战
1 查询需要导出数据的用户 select username,default_tablespace from dba_users where username like %USERNAME%; 2 查看原来表空间大小 set linesize 9999 pagesize 9999 SELECT total.tablespace_name, Round(total.MB, 2) AS Total_MB, Round(t…...
知了汇智引领未来:全新AIGC系列课程,打造数字时代人才新标杆
在全球AIGC(生成式人工智能)技术加速发展的背景下,一系列权威报道揭示了该领域内市场潜力、行业应用、教育研究、政府监管以及具体应用场景的蓬勃进展。据腾讯网4月19日报道,中国AIGC应用市场规模预计于2024年达到200亿人民币&…...
软件项目验收第三方测试报告如何获取
软件项目验收第三方测试报告是确保软件质量、安全性和稳定性的重要环节。对于企业和开发者来说,获取一份全面、专业的第三方测试报告,对于提升软件产品的竞争力和用户满意度至关重要。本文将介绍如何获取软件项目验收第三方测试报告,以及相关…...
linux下脚本监控mysql主从同步异常时发邮件通知
在MySQL中,同步异常监控通常涉及监控复制的状态。可以通过查询SHOW SLAVE STATUS命令来获取复制的状态信息,并对其进行监控。以下是一个简单的SQL脚本,用于监控MySQL复制状态并输出异常信息: 查mysql slave状态 SHOW SLAVE STAT…...
【MySQL】分组排序取每组第一条数据
需求:MySQL根据某一个字段分组,然后组内排序,最后每组取排序后的第一条数据。 准备表: CREATE TABLE t_student_score (id int(11) NOT NULL AUTO_INCREMENT COMMENT ID,stu_name varchar(32) NOT NULL COMMENT 学生姓名,course…...
滚珠螺杆在精密机械设备中如何维持精度要求?
滚珠螺杆在精密设备领域中的运用非常之广泛,具有精度高、效率高的特点。为了确保滚珠螺杆在生产设备中能够发挥最佳性能,我们必须从多个维度进行深入考量,并采取针对性的措施,以确保其稳定、精准地服务于现代化生产的每一个环节。…...
现代 c++ 三:右值引用与移动语义
c11 为了提高效率,引入了右值引用及移动语义,这个概念不太好理解,需要仔细研究一下,下文会一并讲讲左值、右值、左值引用、右值引用、const 引用、移动构造、移动赋值运行符 … 这些概念。 左值和右值 左值和右值是表达式的属性。…...
云效流水线+K8s实战:Java微服务全自动部署与优化指南(手把手版)
1. 云效流水线入门:从零搭建Java微服务CI/CD管道 第一次接触云效流水线时,我像发现新大陆一样兴奋——原来部署可以这么简单!记得去年团队还在用Jenkins手动打包部署,每次发版都要折腾到凌晨。现在用云效 K8s的组合,我…...
深入解析build.prop:从基础参数到高级定制指南
1. build.prop文件到底是什么? 第一次在Android系统目录里看到build.prop这个文件时,我也是一头雾水。这玩意儿看起来就像个普通的文本文件,但里面密密麻麻的参数却让人望而生畏。后来才发现,它其实是Android系统的"身份证&q…...
2025届学术党必备的六大降AI率方案实际效果
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 面向维普系统针对人工智能生成内容的识别机制,要降低AI检测率就得采取系统化策略…...
2025届毕业生推荐的五大AI辅助论文平台推荐榜单
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 使AIGC检测率得以降低的关键要点在于,切实有效地去削弱文本所展现出来的呈现机器…...
CLIProxyAPI + OpenCode
LIProxyAPI一键安装,# https://help.router-for.me/cn/introduction/quick-start.html curl -fsSL https://raw.githubusercontent.com/brokechubb/cliproxyapi-installer/refs/heads/master/cliproxyapi-installer | bashGo 代码 🤔,有环境直接源码编译…...
雷达信号相干性:从理论到工程实践的关键解析
1. 雷达信号相干性的基础概念 雷达信号相干性听起来像是个高大上的专业术语,但其实理解起来并不难。想象一下你在听交响乐,小提琴手们都在演奏同一个旋律,但如果没有指挥协调,每个人拉琴的节奏可能略有不同,听起来就会…...
如何用Depressurizer拯救混乱的Steam游戏库?3个高效管理技巧
如何用Depressurizer拯救混乱的Steam游戏库?3个高效管理技巧 【免费下载链接】Depressurizer A Steam library categorizing tool. 项目地址: https://gitcode.com/gh_mirrors/de/Depressurizer 你是否也曾面对Steam库里上百款游戏却找不到想玩的那一款&…...
Wan2.2-I2V-A14B私有部署避坑指南:基于RTX4090D镜像的保姆级教程
Wan2.2-I2V-A14B私有部署避坑指南:基于RTX4090D镜像的保姆级教程 1. 开篇:为什么选择私有部署? 当你第一次接触Wan2.2-I2V-A14B这个强大的文生视频模型时,可能会被它的效果惊艳到。但随之而来的部署问题往往让人头疼——环境配置…...
Anasys Workbanch实战解析:齿轮接触强度有限元分析全流程
1. 齿轮接触强度分析基础认知 刚接触有限元分析的新手工程师常会疑惑:为什么齿轮设计必须做接触强度分析?这个问题要从齿轮传动的实际工况说起。想象一下两个金属齿轮在高速啮合运转时,齿面接触区域实际上只有指甲盖大小的面积,却…...
15. Doris 系列第15篇:Unique Key 深度精讲|Merge-on-Write(MOW)原理、读写流程、Compaction适配与生产调优全指南
适用人群:数仓开发、Doris运维、实时画像/订单状态更新业务落地、2.0版本升级改造 核心价值:纯干货落地版,含底层结构、全流程拆解、多场景优化、监控告警、常见坑解决方案,直接照搬上线一、Merge-on-Write(MOW)核心概念ÿ…...
