【cropperjs】优秀、优雅的前端图片裁剪库

news2024/11/25 7:09:01

下载

npm i cropperjs

npm官网- https://www.npmjs.com/package/cropperjs


cropperjs关键参数

  • aspectRatio 图片裁剪比例
    • 默认值 :NaN
    • 作用:图片裁剪比例
    • 值:自定义裁剪比例,例如1 / 1 , 4 / 3 , 16 / 9

  • viewMode 裁剪模式
    • 默认值:0
    • 值:
      • 0:无限制
      • 1:限制裁剪框不超过画布的大小。
      • 2:限制画布的最小大小以适应容器。如果画布和容器的比例不同,最小画布将在其中一个维度上被额外的空间包围。
      • 3:限制画布的最小尺寸以填充容器。如果画布和容器的比例不同,则容器将无法在其中一个维度中容纳整个画布。
      • 定义裁剪器的视图模式。如果将viewMode设置为0,则裁剪框可以扩展到画布之外,而值为1、2或3则会将裁剪框限制为画布的大小。viewMode为2或3时,将额外将画布限制为容器。当画布和容器的比例相同时,2和3之间没有区别。

  • dragMode 裁剪器的拖动模式
    • 默认值:crop
      • crop:创建新的裁剪框,将裁剪的区域外删除
      • move:移动画布,裁剪的同时,可拖动图片
      • none:什么也不做,不可拖动图片

关键事件

  • cropend 鼠标/手指抬起事件
    • 类型:函数
    • 作用:当裁剪完图片时。可在该事件函数里对图片操作,例如将图片转为png,jpg等操作

  • getCroppedCanvas 获取已裁剪的cnavas图片数据
  • 类型:函数
  • 用法↓
cropper.getCroppedCanvas()

vue里封装cropperjs组件

src/components/cropperjs.vue

<template>
    <div>
        <img ref="image" class="img" :src="imgUrlPros.url">
    </div>
</template>

<script setup>
// 引入cropperjs库与相关css
import Cropper from 'cropperjs'
import 'cropperjs/dist/cropper.min.css'

// 传来的图片地址
const imgUrlPros = defineProps({
    url: ''
}),
    image = ref(),//img元素 
    emit = defineEmits(['clip-img'])



// 待元素渲染后使用cropperjs
nextTick(() => {
    new Cropper(image.value, {
        aspectRatio: 1 / 1,//裁剪比例 → [1 / 1, 19 / 9 ,...........]
        viewMode: 3,//裁剪模式 [0,1,2,3]
        dragMode: 'move',
        cropend() {
            // 获取吐泡泡裁剪后的canvas 
            const getCvs = this.cropper.getCroppedCanvas()
            // 将canvas转为图片数据 → 参数1:图片格式[image/webp, image/jpg, image/png] | 参数2:图片裁剪后的清晰度,相当于压缩图片 0 - 1(只对jpg与webp有效)                 
            const getImgData = getCvs.toDataURL('image/webp', .5)

            // 裁剪后发送数据给父级
            emit('clip-img', getImgData) 
        }
    })
})

</script>

<style scoped>
.img {
    width: 100%;
    height: auto;
    object-fit: contain;
    display: block;
    max-width: 100%;
}
</style>

使用封装的cropperjs组件

src/views>HomeView.vue

<template>
      <cropper url="/public/1.jpg" @clip-img="clipImg" />
</template>

<script setup>
// 裁剪后的图片事件
const clipImg = imgData => console.log(imgData)
</script>

效果图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/613252.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营第二十七天| 39. 组合总和、 40.组合总和II、 131.分割回文串

组合总数 题目链接&#xff1a;力扣 这题和之前题目的区别在于&#xff0c;本题没有数量要求&#xff0c;可以无限重复的取某一元素&#xff0c;但是对元素的总和有限制&#xff0c;这就说明了递归的限制不在于层数&#xff0c;而是选取元素的总和超过target就返回 终止条件为…

【owt】WebrtcNode, subscirbe-sdp offer 流程(2)

流程图 创建MediaStream&#xff0c; MediaStream一方面作为从VideoFramePacketizer接收到媒体数据&#xff1b; 创建VideoFramePacketizer&#xff0c;MediaStream 把sink 注册到VideoFramePacketizer&#xff0c;这样VideoFramePacketizer&#xff08;继承了MediaSource&…

upload靶场通关(12-21关)

Pass-12&#xff08;白名单校验&#xff08;GET 型 0x00 截断&#xff09;&#xff09; 先看提示&#xff1a; 一头雾水&#xff0c;只知道了上传路径是可控的 查看源码&#xff1a; 能看懂就看看&#xff0c;反正我是看了同学的笔记得知这是白名单&#xff0c;按照文件名进行…

Customizable constraint systems for succinct arguments学习笔记(1)

1. 引言 微软研究中心Srinath Setty、a16z crypto research 和 Georgetown University Justin Thaler、Carnegie Mellon University Riad Wahby 20203年论文《Customizable constraint systems for succinct arguments》。 在该论文中&#xff0c;介绍了Customizable constra…

CMake学习(1): CMake基本使用

https://subingwen.cn/cmake/CMake-primer/ 1. CMake 概述 CMake是一个项目构建工具&#xff0c;并且是跨平台的。Cmake跟Makefile其实是差不多的&#xff0c;只不过makefile更底层些。大多是 IDE 软件都集成了 make&#xff0c;比如&#xff1a;VS 的 nmake、linux 下的 GNU…

单链表OJ题:LeetCode--141.环形链表

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下LeetCode中的第141道单链表OJ题&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; 数据结构与算法专栏&#xff1a;数据结构与算法 个 …

龙岗区五联土地整备利益统筹项目,集体物业集中签约仪式

五联土地整备利益统筹项目启动以来街道高度重视相关工作开专题会、建工作组、设党支部把征拆工作一项项推进 截至6月1日已完成&#xff1a; 清租签约73户&#xff0c;面积9.55万m&#xff08;意向签约17户&#xff0c;约1.66万m&#xff09; 私人住宅业主补偿安置签约8户&…

Java语言----反射、枚举以及lambda表达式

目录 一.反射 1.1反射的基本情况 1.2反射中最重要的类 1.2.1 Class类 1.2.2Field类 1.2.3Constructor类 1.2.4Methood类 1.3反射优缺点 二.枚举 2.1概念 2.2枚举&#xff08;enum&#xff09;类方法 2.3枚举的构造 三.Lambda表达式 3.1Lambda介绍 3.2 函数式接…

AI实战营:深度学习预训练与MMPreTrain

目录 一、MMPretrain算法库介绍 二、经典主干网络 残差网络ResNet&#xff08;2015&#xff09; Vision Transformer(2020) 三、自监督学习 四、多模态算法 一、MMPretrain算法库介绍 算法库与任务组成&框架概览 预训练工具箱MMPretrain Python推理API 环境搭建 O…

数据结构与算法·第4章【串】

串是有限长的字符序列&#xff0c;由一对单引号相括&#xff0c;如: “a string” 可以理解为c的 s t r i n g string string 基本操作 S t r A s s i g n , S t r C o m p a r e , S t r L e n g t h , C o n c a t , S u b S t r i n g StrAssign,StrCompare,StrLength,Conc…

大数据技术——使用IDEA开发Scala程序

目录 一、使用IDEA开发WordCount程序... 3 二、实验目的... 3 三、实验要求... 3 四、实验环境... 3 五、实验步骤... 3 4.1.1启动IDEA并创建一个新项目WordCount 3 4.1.2为WordCount项目添加Scala框架支持... 7 4.1.3数据准备... 8 4.1.4设置项目目录... 9 4.1.5新建…

webAPI学习笔记4——PC端网页特效

目录 1. 元素偏移量 offset 系列 1.1 offset 概述 1.2 offset 与 style 区别 offset style !!&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;案例&#xff1a;获取鼠标在盒子内的坐标 &#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&…

Jeston Orin Nnao 安装pytorch与torchvision环境

大家好&#xff0c;我是虎哥&#xff0c;Jeston Orin nano 8G模块&#xff0c;提供高达 40 TOPS 的 AI 算力&#xff0c;安装好了Jetpack5.1之后&#xff0c;我们需要配置一些支持环境&#xff0c;来为我们后续的深度学习开发提供支持。本章内容&#xff0c;我将主要围绕安装对…

OCR图片文字识别,人工手动图片标注软件安装过程

OCR图片文字识别&#xff0c;人工手动图片标注软件安装过程&#xff0c;本章关注标注软件的安装&#xff0c;启动过程 1. 下载 anaconda anaconda 下载慢的问题&#xff1a; 使用国内镜像地址下载&#xff1a; https://mirrors.bfsu.edu.cn/anaconda/archive/ https://www.ana…

OpenMMLab-AI实战营第二期——4.深度学习预训练与MMPretrain

文章目录 1. MMPreTrain算法库介绍1.1 算法库与任务组成1.2 框架概览 2. 经典主干网络2.1 ResNet2.2 Vision Transformer 3. 自监督学习3.1 SimCLR3.2 MAE3.3 iBOT 4. 多模态算法4.1 CLIP4.2 BLIP 视频链接&#xff1a;b站-深度学习预训练与MMPretrain 1. MMPreTrain算法库介绍…

NvM学习笔记(一)以TC387为例,分析为什么要使用Flash 模拟 EEPROM ?

在嵌入式软件系统中&#xff0c;管理非易失性的数据存储&#xff0c;如在系统启动时&#xff0c;从非易失性存储器中读取一些关键数据&#xff0c;在系统关闭阶段&#xff0c;同步应用程序RAM区的数据到非易失性存储器中&#xff0c;是一项十分必要的工作。 目前行业内用的最广…

Linux :: 时间日历指令【3】:cal 指令:查询当日是今年的第几天、输出当前月历、指定月历、输出当前年历、指定年历

前言&#xff1a;本篇是 Linux 基本操作篇章的内容&#xff01; 笔者使用的环境是基于腾讯云服务器&#xff1a;CentOS 7.6 64bit。 学习集&#xff1a; C 入门到入土&#xff01;&#xff01;&#xff01;学习合集Linux 从命令到网络再到内核&#xff01;学习合集 目录索引&am…

Redis分段锁实现超高并发秒杀

参考尼恩著&#xff1a;《Java高并发核心编程》 技术自由圈 业务情景 还是秒杀场景&#xff0c;假设抖音直播间小杨哥上架6000单螺蛳粉&#xff0c;价格9.9买10包&#xff0c;限时1分钟秒杀&#xff0c;此时准备秒杀的人有1万人。我们首先从技术上来看看如果不进行优化是否可以…

控制四旋翼飞行器以进行多目标航点导航的MPC算法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

信不信,3招就能测出你的网工水平

大家好&#xff0c;我的网工朋友 老话常谈一下&#xff0c;在网工这行发展&#xff0c;技术肯定是第一位的。 从你入行的第一步起&#xff0c;就很看重你的技术水平了&#xff0c;越往后&#xff0c;就更注重技术水平和项目经验的融合度。 再往后&#xff0c;技术要有&#…