UNIAPP微信小程序使用WelCropper

UNIAPP 微信小程序使用WelCropper

裁剪模式 mode: ‘quadrectangle’
效果图:
在这里插入图片描述

插件地址: https://gitee.com/hanzisky/welCropper

代码拉取下来后部分文件内容需要稍作调整 . 下方会列出修改部分

首先是文件放入文件夹
在这里插入图片描述

此处放了两个WelCropper是有原因的
两处的JS文件内容不同
test目录中的WekCropper.js文件放置了组件构造器 , 可防止编译报错 找不到组件构造器
Component is not found
在这里插入图片描述

welCropper目录中的welCropper.js文件是放置裁剪插件的function init() 初始化函数方法
也是我们需要修改的js文件
在这里插入图片描述
修改里面的小程序语法中的 that.setData({ });
为vue的语法 直接 that.变量名称 = 赋值 ;
不知道我这样说能不能理解. 意思就是我们需要将JS文件中的小程序语法, 改为uniapp 编译所需的vue语法 即可;
例图:
修改前在这里插入图片描述
修改后在这里插入图片描述

page.json文件声明页面引用组件

{
		    "path" : "pages/index/welCropper",
		    "style" : {
				 "usingComponents": {
					   "test-cropper": "/wxcomponents/test/welCropper"
				    },
				    "navigationBarTitleText": "裁剪图片",
				    "disableScroll": true
			}
}

页面引用

	<test-cropper
		id="welCropper"
		:cropperOptions="cropperOptions"
		:cropperMovableItems="cropperMovableItems"
		:cropperChangableData="cropperChangableData"
	>
	</test-cropper>

在这里插入图片描述

<script>
	export default {
		data() {
			return {
				cropperMovableItems:{},
				enchanceData: {
				  enchance: true,
				  originpath: '',
				  enchancepath: '',
				},
				cropperChangableData:{
					canCrop: true,
					rotateDegree: 0,
					originalSize: {
					    width: 0,
					    height: 0
					},
					scaleSize: {
					    width: 0,
					    height: 0
					},
					shape: {
					
					},
					previewImageInfo: {
					    x: 0,
					    y: 0,
					    w: 0,
					    h: 0
					}
				},
				cropperOptions: {
				    hidden: true,
				    src: '',
				    mode: '',
				    sizeType: []
				}
			};
		},
		onLoad(options) {
			var that = this;
			
			const device = wx.getSystemInfoSync();
			const W = device.windowWidth;
			const H = device.windowHeight - 50;
			
			//1.解析参数
			wx.showLoading({
				title: '预处理中',
			});
			// 初始化组件数据和绑定事件
			let cropper  = that.selectComponent("#welCropper");
			
			//2.从服务器上获取识别的边角   **注意**
			that.PreDealImage(options,cropper);
		},
		methods:{
			//获取图片剪裁的四个点
			PreDealImage(){
				let getCornerUrl = "";//请求地址
				let data = {
					'ImgPath': Path
				}
				that.$getApiData(getCornerUrl, data).then(res => {
					let retObj = res.data;
					//需要得到的返回值
					that.cropperMovableItems = {
							topleft: {
								x: retObj.data.corner[0].x,
								y: retObj.data.corner[0].y
							},
							topright: {
								x: retObj.data.corner[3].x,
								y: retObj.data.corner[3].y
							},
							bottomleft: {
								x: retObj.data.corner[2].x,
								y: retObj.data.corner[2].y,
							},
							bottomright: {
								x: retObj.data.corner[1].x,
								y: retObj.data.corner[1].y,
							}
					}
					//展示图片剪裁框
					cropper.showCropper({
						cropperMovableItems: that.cropperMovableItems,
						src: retObj.data.ImgSrc,
						mode: 'quadrectangle',
						sizeType: ['original'],   //'original'(default) | 'compressed'
						maxLength: 1000, //默认2000,允许最大长宽,避免分辨率过大导致崩溃
						callback: (res,enchangce) => {//enchangce无视 项目自用
							{
								let localImgPath = retObj.data.localImgPath;
								that.CutImage(res, localImgPath, Name);
							}
						}
					})
				});
					
			},
			//完成请求上传接口
			CutImage(res, localImgPath, Name) {
				
			}
		}
	}
</script>

<style lang="less">
@import "../../wxcomponents/welCropper/welCropper.wxss";
</style>

注: PreDealImage方法为请求后台返回的图片边角坐标 , 也就是图片的四个点的坐标

先暂时这样, 后续想到了别的再来补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值