vue+cropperjs插件,实现图片裁剪功能——PC端+移动端——技能提升

发现了一个图片裁剪的插件cropperjs,这个插件非常的强大,能够实现多种功能:

可以对指定的图片进行裁剪,可以自己选择裁剪的交互方式,如大小、纵横比等

还可以预览裁剪区域,确认裁剪后可以生成一个包含裁剪图的canvas对象,借助 canvastoDataURL 方法可以生成一张 Base64 格式的图片。

还有另外一种不使用 canvas 的方式,利用该工具丰富的 api 可以拿到裁剪区域 相对于 原图的各项数据,使用这些数据进行css绝对定位即可展示裁剪后的图,该方式可以保证图片不失真和完整。

大神使用cropperjs的链接:https://www.cnblogs.com/eightFlying/p/cropper-demo.html

cropperjs官网:https://fengyuanchen.github.io/cropper/

此篇文章只简单介绍一下等比例的裁剪功能及使用步骤。

1.安装cropperjs插件

npm install cropperjs --save-dev

安装完插件后,由于此插件并非很多页面都要用到,因此可以不在main.js主入口文件中全局引入,可以在需要使用图片裁剪功能的地方单独引入即可。

2.template部分代码

页面部分,有个原图部分+裁剪按钮+裁剪区域+裁剪后的图片部分。

<div class="before"></div>
<el-button @click="sureSava">裁剪</el-button>
<div class="container">
  <div class="img-container">
    <img src="@/assets/401_images/401.gif" ref="image" alt="" />
  </div>
  <div class="afterCropper">
    <img :src="afterImg" alt="" />
  </div>
</div>

3.js部分代码

import Cropper from "cropperjs";
import "cropperjs/dist/cropper.css";
export default{
	data(){
		return{
			 myCropper: null,
      		 afterImg: "",
		}
	},
	created(){
		this.$nextTick(()=>{
			this.init();
		})
	},
	methods:{
		init(){
			this.myCropper = new Cropper(this.$refs.image,{
				viewMode:1,
				dragNode:'none',
				initialAspectRatio:1,
				aspectRatio:1,
				preview:'.before',
				background: false,
		        autoCropArea: 0.6,
		        zoomOnWheel: false
			})
		},
		sureSava(){
			this.afterImg = this.myCropper.getCroppedCanvas({
				imageSmoothingQuality:'high'
			}).toDataURL('image/jpeg');
		}
	}
}

4.css部分 

.container{
  display: flex;
}
.before{
  width: 100px;
  height: 100px;
  overflow: hidden;
  /* 这个属性可以得到想要的效果 */
}
.img-container{
  height: 400px;
  overflow: hidden;
}
.afterCropper{
  flex: 1;
  margin-left: 20px;
  border: 1px solid salmon; 
  text-align: center;
}
.afterCropper img{
  width: 150px;
  margin-top: 30px;
}

5.最终效果图

在这里插入图片描述

附录一个超级详细的使用参数说明:大神就是大神,生活中处处都是大神。

大神提供的cropperjs的参数详细说明:https://blog.csdn.net/achejq/article/details/93240104

完成!!!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
移动端Vue Vant的Uploader组件可以很方便地实现上传、压缩和旋转图片功能。首先,我们需要在Vue项目中引入Vue Vant库,并在需要使用Uploader的组件中注册该组件。 在页面中使用Uploader组件时,我们可以设置相关的属性来实现功能需求。首先是上传图片功能,可以通过设置`action`属性来指定图片上传的后端接口地址。上传成功后,可以通过监听`@success`事件来处理上传成功的逻辑,例如显示上传成功的提示信息或者将上传成功的图片URL保存到数据库等。 对于压缩图片功能,我们可以使用该组件提供的`beforeRead`方法来获取用户要上传的图片文件对象。然后,利用`HTMLCanvasElement`的`toBlob`方法对图片进行压缩,并将压缩后的图片对象传给Uploader组件进行上传。在压缩图片时,可以设置压缩的尺寸或者压缩的质量、压缩比等参数,以控制压缩后的图片大小适应实际需求。 要实现图片旋转的功能,我们可以利用`EXIF.js`库来读取图片的EXIF信息,获取图片的拍摄方向。然后,根据拍摄方向来确定图片需要旋转的角度,再借助`canvas`的`rotate`方法对图片进行旋转。旋转后的图片可以在`@success`事件触发后重新渲染到页面上,或者直接发送到后端进行保存。 总结来说,移动端Vue Vant的Uploader组件通过设置相关属性和监听事件,配合压缩工具和EXIF库,可以非常方便地实现图片上传、压缩和旋转功能,满足移动端图片处理的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值