# 微信小程序图片裁剪工具we-cropper
[![travis-ci](https://travis-ci.org/we-plugin/we-cropper.svg?branch=master)](https://www.travis-ci.org/we-plugin/we-cropper)
[![npm-version](https://img.shields.io/npm/v/we-cropper.svg)](https://www.npmjs.com/package/we-cropper)
一款灵活小巧的canvas图片裁剪器 [在线体验](https://unpkg.com/we-cropper@1.2.0/docs/assets/online.jpg)
<div align="center">
<a><img src="https://user-images.githubusercontent.com/16918885/50694060-d6a60a00-1073-11e9-9fd7-bba4ce72df19.png" width="350"/></a>
</div>
## 使用说明
*** 克隆项目至你的目录 ***
```bash
cd my-project
git clone https://github.com/we-plugin/we-cropper.git
cd we-cropper
```
## 示例
*** WXML ***
> 首先需要在WXML结构中置入一个canvas作为裁剪图片的容器,并绑定相应的事件句柄。
!> 需要注意的是,canvas的宽高(width、height)需要和we-cropper构造器参数中的保持一致
```html
<import src="../we-cropper/we-cropper.wxml"/>
<view class="cropper-wrapper">
<template is="we-cropper" data="{{...cropperOpt}}"/>
<view class="cropper-buttons">
<view
class="upload"
bindtap="uploadTap">
上传图片
</view>
<view
class="getCropperImage"
bindtap="getCropperImage">
生成图片
</view>
</view>
</view>
```
> 引入WeCropper插件
```javascript
import WeCropper from '../we-cropper/we-cropper.js'
const device = wx.getSystemInfoSync() // 获取设备信息
const width = device.windowWidth // 示例为一个与屏幕等宽的正方形裁剪框
const height = width
Page({
data: {
cropperOpt: {
id: 'cropper', // 用于手势操作的canvas组件标识符
targetId: 'targetCropper', // 用于用于生成截图的canvas组件标识符
pixelRatio: device.pixelRatio, // 传入设备像素比
width, // 画布宽度
height, // 画布高度
scale: 2.5, // 最大缩放倍数
zoom: 8, // 缩放系数
cut: {
x: (width - 200) / 2, // 裁剪框x轴起点
y: (width - 200) / 2, // 裁剪框y轴期起点
width: 200, // 裁剪框宽度
height: 200 // 裁剪框高度
}
}
}
})
//...
```
> 推荐在页面onLoad函数中实例化WeCropper
```javascript
//...
onLoad (option) {
const { cropperOpt } = this.data
this.cropper = new WeCropper(cropperOpt)
.on('ready', (ctx) => {
console.log(`wecropper is ready for work!`)
})
.on('beforeImageLoad', (ctx) => {
wx.showToast({
title: '上传中',
icon: 'loading',
duration: 20000
})
})
.on('imageLoad', (ctx) => {
wx.hideToast()
})
}
```
> canvas2d 使用示例
```javascript
const { cropperOpt } = this.data
this.createSelectorQuery().select(`#${cropperOpt.id}`).fields({ node: true, size: true }).exec((res) => {
const canvas = res[0].node
const ctx = canvas.getContext('2d')
const dpr = wx.getSystemInfoSync().pixelRatio
canvas.width = res[0].width * dpr
canvas.height = res[0].height * dpr
ctx.scale(dpr, dpr)
cropperOpt.canvas = canvas
cropperOpt.ctx = ctx
this.cropper = new WeCropper(cropperOpt)
.on('ready', (ctx) => {
console.log(`wecropper is ready for work!`)
})
.on('beforeImageLoad', (ctx) => {
wx.showToast({
title: '上传中',
icon: 'loading',
duration: 20000
})
})
.on('imageLoad', (ctx) => {
wx.hideToast()
})
})
```
> 事件绑定
!> 插件通过touchStart、touchMove、touchEnd方法来接收事件对象。
```javascript
//...
touchStart (e) {
this.cropper.touchStart(e)
},
touchMove (e) {
this.cropper.touchMove(e)
},
touchEnd (e) {
this.cropper.touchEnd(e)
}
//...
```
有两种方式载入图片:
+ 实例化时载入
!> 当检测到构造参数```src```有值时,会尝试通过 ```wx.getImageInfo```获取图片信息,```src```可以是图片的路径,可以是相对路径、临时文件路径、存储文件路径、网络图片路径,详情见 小程序文档·[wx.getImageInfo](https://developers.weixin.qq.com/miniprogram/dev/api/wx.getImageInfo.html)
```javascript
new weCropper({
// ...
src: '...',
// ...
})
```
+ 先实例化后载入
!> 当检测到通过 ```pushOrign``` 方法传入的值不为空时,会尝试通过 ```wx.getImageInfo```获取图片信息,```src```可以是图片的路径,可以是相对路径、临时文件路径、存储文件路径、网络图片路径,详情见 小程序文档·[wx.getImageInfo](https://developers.weixin.qq.com/miniprogram/dev/api/wx.getImageInfo.html)
1. 实例化 we-cropper,并将实例挂载在 page 上
```javascript
onLoad () {
this.cropper = new weCropper({
// ...
})
}
```
2. 点击上传图片按钮后获取图片地址,并通过pushOrign方法载入图片
```javascript
//...
uploadTap () {
const self = this
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success (res) {
const src = res.tempFilePaths[0]
self.cropper.pushOrign(src)
}
})
}
```
> 缩放调整画布中的图片直到满意的状态,点击生成图片按钮,导出图片
```javascript
getCropperImage () {
this.wecropper.getCropperImage((tempFilePath) => {
// tempFilePath 为裁剪后的图片临时路径
if (tempFilePath) {
wx.previewImage({
current: '',
urls: [tempFilePath]
})
} else {
console.log('获取图片地址失败,请稍后重试')
}
})
}
```
## 遇到问题
+ [Issues](https://github.com/we-plugin/we-cropper/issues)
+ [Pull requests](https://github.com/we-plugin/we-cropper)
+ we-cropper交流群(已超过100人,添加Sail小助手微信邀请入群)
<img src="https://user-images.githubusercontent.com/16918885/60417025-eb71ed80-9c11-11e9-916a-5876b2fa321c.png" width="350">
## 鼓励作者
<img src="https://unpkg.com/we-cropper@1.2.0/docs/assets/appreciate.jpg" width="350" height="350">
没有合适的资源?快使用搜索试试~ 我知道了~
微信小程序图片裁剪工具.zip
共129个文件
js:44个
json:21个
wxss:16个
需积分: 2 0 下载量 71 浏览量
2024-01-11
21:34:54
上传
评论
收藏 118KB ZIP 举报
温馨提示
小程序,轻量级设计,无需下载安装,即开即用,释放手机内存压力,轻松应对日常各种需求。无论是购物支付、信息查询,还是休闲娱乐、生活服务,我们都一应俱全,满足您的多元化需求。
资源推荐
资源详情
资源评论
收起资源包目录
微信小程序图片裁剪工具.zip (129个子文件)
.babelrc 202B
.babelrc 25B
.editorconfig 243B
.eslintignore 21B
.gitignore 148B
.gitignore 28B
.gitignore 28B
index.html 812B
we-cropper.js 31KB
we-cropper.js 31KB
we-cropper.min.js 12KB
we-cropper.min.js 12KB
build.js 9KB
canvas2base64.js 6KB
utils.js 4KB
methods.js 4KB
default.js 3KB
upload.js 3KB
checkcomponents.js 3KB
checkwxss.js 2KB
canvas2d.js 2KB
cut.js 2KB
watermark.js 2KB
cutInside.js 2KB
normal.js 2KB
build.js 2KB
update.js 2KB
.eslintrc.js 2KB
cut.test.js 2KB
config.js 2KB
network.js 2KB
config.js 2KB
tools.js 1KB
index.js 1KB
prepare.js 1KB
main.js 1KB
handle.js 999B
promisify.js 896B
gulpfile.js 841B
helper.js 818B
index.js 638B
scale.js 630B
index.js 617B
utils.js 570B
index.test.js 545B
index.js 541B
observer.js 524B
wx.test.js 413B
setting.js 381B
app.js 375B
index.js 9B
app.js 8B
package.json 2KB
package.json 2KB
package-lock.json 610B
project.config.json 579B
app.json 506B
tsconfig.json 409B
app.json 218B
package.json 167B
setting.json 161B
network.json 160B
index.json 158B
cutInside.json 157B
upload.json 157B
watermark.json 154B
canvas2d.json 151B
normal.json 151B
lerna.json 90B
index.json 67B
index.json 48B
index.json 2B
package.json 2B
LICENSE 1KB
LICENSE 1KB
README.md 7KB
api.md 6KB
README.md 4KB
README.md 4KB
README.md 4KB
changelog.md 3KB
CONTRIBUTING_COMMIT.md 3KB
CONTRIBUTING.md 2KB
ISSUE_TEMPLATE.md 343B
.nojekyll 0B
.npmignore 147B
.npmignore 48B
.npmignore 29B
release.sh 465B
wx.d.ts 8KB
methods-test.ts 2KB
we-cropper.d.ts 1KB
options-test.ts 964B
options.d.ts 523B
mpvue-cropper.vue 3KB
index.wxml 620B
index.wxml 597B
canvas2d.wxml 584B
normal.wxml 580B
we-cropper.wxml 567B
共 129 条
- 1
- 2
资源评论
极致人生-010
- 粉丝: 3344
- 资源: 3076
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功