diff --git a/docs/component/img-cropper.md b/docs/component/img-cropper.md index 70b4b8e7..a977d5ac 100644 --- a/docs/component/img-cropper.md +++ b/docs/component/img-cropper.md @@ -4,9 +4,9 @@ ## 基本用法 -图片裁剪组件需要绑定 `v-model` 来控制组件的显示与隐藏,通过属性 `img-src` 控制展示的图片资源位,也可以通过函数 `resetImg` 来控制组件图片的初始化。进入组件后,可以对图片进行拖拽、双指缩放、旋转等操作。监听 `confirm` 事件获取选中值。 +图片裁剪组件需要绑定 `v-model` 来控制组件的显示与隐藏,通过属性 `img-src` 控制展示的图片资源。进入组件后,可以对图片进行拖拽、双指缩放、旋转等操作,监听 `confirm` 事件获取裁剪结果。 -> *注意:在使用组件时,最好在一个新页面中使用图片裁剪组件,图片裁剪保持`show`为true,完成裁剪时,返回上一页。* +> *注意:建议在新页面中使用图片裁剪组件,保持 `show` 为 true,完成裁剪后返回上一页。* ```html ``` +### 16:9 影视比例 + +```html + + +``` + +### 16:10 这么阔 很有型 + +16:10 的显示比例非常适合展示风景照片或者电影海报等宽屏内容。 + +```html + + +``` + ## 裁剪后上传 结合 `useUpload` 可以实现裁剪完成后自动上传图片的功能。 @@ -171,3 +161,44 @@ async function handleConfirmUpload(event) { } } ``` + +## Attributes + +| 参数 | 说明 | 类型 | 可选值 | 默认值| 最低版本 | +|-----|------|-----|-------|-------|--------| +| v-model | 打开图片裁剪组件 | boolean | - | false | - | +| img-src | 图片资源链接 | string | - | - | - | +| img-width | 截屏预览图片的初始宽度; `1、设置宽度不设置高度,按照宽度等比缩放;2、如果都不设置,预览时图片大小会根据裁剪框大小进行等比缩放,进行锁边处理;`; string 类型只支持 % 单位,number 类型时单位为 px | number / string | - | - | - | +| img-height | 截屏预览图片的初始高度; `1、设置高度不设置宽度,按照高度等比缩放;2、如果都不设置,预览时图片大小会根据裁剪框大小进行等比缩放,进行锁边处理;`; string 类型只支持 % 单位,number 类型时单位为 px | number / string | - | - | - | +| disabled-rotate | 禁止图片旋转 | boolean | - | false | - | +| export-scale | 设置导出图片尺寸 | number | - | 2 | - | +| max-scale | 最大缩放倍数 | number | - | 3 | - | +| cancel-button-text | 取消按钮文案 | string | - | 取消 | - | +| confirm-button-text | 确认按钮文案 | string | - | 完成 | - | +| quality | 生成的图片质量 [wx.canvasToTempFilePath属性介绍](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/wx.canvasToTempFilePath.html#%E5%8F%82%E6%95%B0) | number | 0/1 | 1 | - | +| file-type | 目标文件的类型,[wx.canvasToTempFilePath属性介绍](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/wx.canvasToTempFilePath.html#%E5%8F%82%E6%95%B0) | string | - | png | - | +| aspect-ratio | 裁剪框宽高比,格式为 width:height | string | - | 1:1 | $LOWEST_VERSION$ | + +## Events + +| 事件名称 | 说明 | 参数 | 最低版本 | +|---------|-----|-----|---------| +| confirm | 完成截图时触发 | `{tempFilePath, width, height}` 分别为生成文件的临时路径 (本地路径)、生成图片宽、生成图片高| - | +| cancel | 当取消截图时触发 | - | - | +| imgloaderror | 当图片加载错误时触发 | `{err} `| - | +| imgloaded | 当图片加载完成时触发 | `{res}` | - | + +## Methods + +对外暴露函数 + +| 事件名称 | 说明 | 参数 | 最低版本 | +|--------|------|-----|---------| +| setRoate | 设置图片旋转角度 | deg (设置的旋转角度)| - | +| resetImg | 重置图片的角度、缩放、位置 | - | - | + +## 外部样式类 + +| 类名 | 说明 | 最低版本 | +|-----|------|--------| +| custom-class | 根节点样式 | - | \ No newline at end of file diff --git a/src/pages/imgCropper/Index.vue b/src/pages/imgCropper/Index.vue index 9dd25837..10935322 100644 --- a/src/pages/imgCropper/Index.vue +++ b/src/pages/imgCropper/Index.vue @@ -1,7 +1,7 @@ (`cropper${uuid()}`) // canvas 组件的唯一标识符 + // 延时动画设置 let CHANGE_TIME: any | null = null // 移动节流 @@ -373,7 +375,7 @@ function computeImgSize() { */ function initCanvas() { if (!ctx.value) { - ctx.value = uni.createCanvasContext('wd-img-cropper-canvas', proxy) + ctx.value = uni.createCanvasContext(canvasId.value, proxy) } } @@ -575,7 +577,7 @@ function canvasToImage() { destHeight: Math.round(cutHeight.value * exportScale), fileType, quality, - canvasId: 'wd-img-cropper-canvas', + canvasId: canvasId.value, success: (res: any) => { const result = { tempFilePath: res.tempFilePath, width: cutWidth.value * exportScale, height: cutHeight.value * exportScale } // #ifdef MP-DINGTALK