uni-app相片裁剪插件(简易版)

目录

一、裁剪插件效果图

二、插件使用

1.引用插件

2.完整代码 

插件地址:bt-cropper图片裁剪插件 - DCloud 插件市场


一、裁剪插件效果图

注:该插件是结合自定义相机使用的,也可单独使用选择照片进行裁剪功能,则不需要拍照 

二、插件使用

1.插件引用

注:引用该插件前请先前往插件市场将该插件导入项目中 

<bt-cropper ref="cropper" :fileType="'jpg'" :ratio="16/20" :imageSrc="imageSrc" />

2.插件属性Props

|属性名|类型|默认值|说明|
|:-:|:-:|:-:|:-:|
|ratio|number|0|裁切图像的宽高比,0表示自由比例|
|dWidth|number|0|生成的图片的宽度,单位:px,如果传入0的话就是按原像素的比例裁剪,也就是说,输出图片的清晰度和输入图片的清晰度一样|
|imageSrc|String|''|原图的路径,支持本地路径和网络路径,如果是网络路径,小程序要注意配置下载域名,H5要注意跨域问题|
|mask|String|''| 裁剪的蒙版url,配合蒙版可以裁剪出任何形状的图形 (示例见全屏裁剪demo) |
|fileType|String|'jpg'|目标文件的类型,只支持 'jpg' 或 'png'。默认为 'jpg'|
|quality|Number|1|图片的质量,取值范围为 (0, 1],不在范围内时当作1.0处理|
|showGrid|Boolean|false|是否显示中心网格线,默认不显示|
|initPosition|object|null|图片自定义的初始的位置,内容格式见change事件|
|autoZoom|Boolean|true|是否开启操作结束后自动放大到窗口大小|
|containerSize|object|null|手动指定容器大小,如果裁剪器放在大小会移动或缩放的dom中,则必须手动指定大小,可以带上单位,如果不带单位默认px,支持的单位有:rpx,px,vw,vm,示例:{width:100,height:1100}或者:{width:'100rpx',height:'100rpx'}|
|canvas2d|Boolean|false| 是开启 2d canvas |

3.插件方法Methods

|方法名称|说明|参数|
|:-:|:-:|:-:|
|crop|裁剪图片|开始绘制并开始裁剪图片,返回Promise对象|
|init|初始化,图片路径变化的时候自动调用此方法,如果包裹的dom大小变化了,你需要手动调用此方法|-|
|initCropper|重置裁剪框和图片的位置和大小到初始的位置和大小|-|
|undo|撤销,最多可以回退10步|-|
|resume|重做|-|

 4.插件事件Events 

|方法名称|说明|返回值|
|:-:|:-:|:-:|
|change|当裁剪框和图片的相对位置发生变化的时候触发,返回裁剪框与图片的相对位置|ev={left:number,top:number,width:number,height:number}|
|loadFail|当图片加载失败时触发| - |
|cropStart|当裁开始时触发| - |

5.完整代码 

<template>
	<view class="container">
		<bt-cropper ref="cropper" :fileType="'jpg'" :ratio="16/20" :imageSrc="imageSrc" />
		<view class="footer">
			<view class="btn-1">
				<u-button shape="circle" type="warning" text="重新拍照" @click="close" />
			</view>
			<view class="btn-2">
				<u-button shape="circle" type="primary" text="确定选择" @click="crop" />
			</view>
		</view>
	</view>
</template>
<script>
	export default {
		data() {
			return {
				imageSrc: "",
			}
		},
		onLoad(option) {
			// 选择照片信息
			let data = JSON.parse(option.data);
			this.imageSrc = decodeURIComponent(data.tempImagePath)
		},
		methods: {
			// 裁剪回调函数方法
			crop() {
				// 通过组件定义的ref调用cropper方法,返回一个promise对象
				this.$refs.cropper.crop().then((res) => {
					let pages = getCurrentPages() //获取当前页面栈实例
					let prevPage = pages[pages.length - 3] //获取上一页面栈实例,-3 == 上上一个页面栈实例
					//返回上一页并传递所需当前页面栈参数
					prevPage.$vm.getValue(JSON.stringify({
						tempFilePath: res
					}))
					// 返回页面栈
					uni.navigateBack({
						delta: 2
					})
				})
			},
			// 重新拍照,关闭裁剪
			close() {
				uni.navigateBack({
					delta: 1
				})
			}
		}
	}
</script>
<style lang="scss" scoped>
	.container {
		/** 外层一定要指定大小 */
		height: 100vh;

		.footer {
			width: 100%;
			position: fixed;
			left: 0;
			right: 0;
			bottom: 0;
			z-index: 20;
			background: #000;
			display: flex;
			align-items: center;
			padding-top: 25rpx;
			padding-bottom: 50rpx;

			.btn-1,
			.btn-2 {
				width: 40%;
				margin: auto;
			}
		}
	}
</style>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
uni-app是一种基于Vue.js的跨平台应用框架,可以使用它开发同时适配多个平台的应用程序。录制视频是现代应用程序中常见的功能之一,为了方便uni-app开发者实现视频录制功能,可以借助uni-app录制视频插件。这样的插件可以提供简单易用的接口,让开发者可以方便地在uni-app应用中集成视频录制功能,而不需要针对不同平台编写不同的代码。 uni-app录制视频插件通常会提供包括调用摄像头、录制视频、保存视频等功能的API,开发者可以通过简单的调用这些API来实现视频录制功能。插件通常也会提供一些定制化的配置选项,比如视频质量、录制时长等,让开发者可以根据自己的需求对录制视频的行为进行调整。 另外,uni-app录制视频插件也会提供一些回调函数或者事件监听,让开发者可以对录制视频的过程进行监控和处理。比如在录制完成后自动保存视频、上传视频至服务器等操作都可以通过插件提供的回调或者事件来实现。 总之,uni-app录制视频插件为开发者提供了一种方便快捷的方式来实现视频录制功能,大大简化了开发流程,提高了开发效率。同时,由于插件的通用性,开发者编写的代码也更具有可移植性和跨平台性。因此,对于需要在uni-app应用中实现视频录制功能的开发者来说,使用录制视频插件是一个非常不错的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XINGZI前端程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值