# uni-app 图片裁剪插件
[uni-app](https://github.com/dcloudio/uni-app) 图片裁剪插件. 该插件基于[Cropper.js](https://github.com/fengyuanchen/cropperjs), 感谢 cropper.js 优秀又强大的功能, 让裁剪图片变得容易, 本人使用 webview 的方式集成 cropper.js 跟 uni-app 进行数据交互, 可以满足图片裁剪的基本需求.
- 支持裁剪预览
- 支持设置长宽比
- 支持设置裁剪大小
- 支持放大缩小
- 支持圆形裁剪
- 导出支持 base64(dataUrl) 以及 blob 格式导出
> 我们都知道 uni-app 中是无法操作 DOM, 而好多基于 DOM 的优秀库无法在 uni-app 中直接使用, 如果要移植代价高昂(有些根本移植不了), 使用 webview 的方式去整合不妨是一种快捷的途径.
## screenshot
## 支持
- App 5+
- h5
- 小程序
## 微信小程序
微信小程序需要将 webview 中加载的 html 设置为从网络加载, 并加入微信白名单, 详情见 [web-view](https://uniapp.dcloud.net.cn/component/web-view?id=web-view), 通常你需要将 `uni_modules\buuug7-img-cropper\hybrid\html\cropper` 目录复制到你 webserver 中, 然后修改 `uni_modules/buuug7-img-cropper/pages/cropper.vue` 中 `` 组件 src 属性为你部署后访问的地址.
```vue
```
## 安装
推荐从[dcloud 插件市场](https://ext.dcloud.net.cn/plugin?id=5907) 安装插件
## 用法
在你项目中 `pages.json` 新增`uni_modules/buuug7-img-cropper/pages/cropper`页面配置
```json
{
"pages": [
{
"path": "uni_modules/buuug7-img-cropper/pages/cropper",
"style": {
"navigationBarTitleText": "图片裁剪"
}
}
]
}
```
在 template 中:
在模板中你可以绑定给任何事件, 比如通过点击按钮来选择上传并裁剪图片
```vue
```
在 script 中:
```javascript
export default {
data() {
return {
// 储存最后裁剪的数据 base64
imgDataUrl: "",
};
},
methods: {
chooseImg() {
const that = this;
uni.navigateTo({
url: "../../uni_modules/buuug7-img-cropper/pages/cropper",
events: {
imgCropped(event) {
// 监听裁剪完成
// 返回的 event 中包含了已经裁剪好图片的base64编码字符串
// 你可以使用 组件来展示裁剪后的图片
// 或者你可以将该字符串通过接口上传给服务器用来保存
console.log(event);
that.imgDataUrl = event.data;
// do whatever you want
// upload to server
},
},
});
},
},
};
```
## 属性说明
在 `uni_modules\buuug7-img-cropper\hybrid\html\cropper\index.js` 文件中, 你可以设置所有与 cropper.js 相关的选项, 下面是一些最常用的选项
```javascript
// 宽高比
const aspectRatio = 1 / 1;
// 自动裁剪区域, 默认为 50%
const autoCropAre = 0.5;
// 裁剪宽度
const croppedWidth = 200;
// 裁剪高度
const croppedHeight = croppedWidth * aspectRatio;
// 是否裁剪为圆形
const roundedCrop = true;
```
## TODO
- 通过给 webview 传参来控制 cropper.js 更多行为