在使用React开发中咱们常常会遇到上传图片的状况,若是要使的上传的图片符合必定的规格,那么便要在客户端对上传的图片进行必定的裁剪,这个时候我么即可以使用到css
react-cropper这个图片裁剪组件,能够帮助咱们轻松的实现图片裁剪功能。使用步骤以下:react
npm install --save-dev react-cropper
import React from 'react' import Cropper from 'react-cropper' import 'cropperjs/dist/cropper.css' import {Button} from 'antd' export default class Crop extends React.Component { constructor() { super(); this.cropImage = this.cropImage.bind(this); } cropImage() { if (this.cropper.getCroppedCanvas() === 'null') { return false } this.props.getCropData(this.cropper.getCroppedCanvas().toDataURL()) } render() { return ( <div> <div style={{width: '100%'}}> <Cropper src={this.props.src} ref={cropper => { this.cropper = cropper; }} style={{height: 400, width: '100%'}} aspectRatio={246/346} guides={false} /> </div> <div> <Button type="primary" size="large" onClick={this.cropImage} style={{marginTop: '10px'}}> 确认裁剪 </Button> </div> </div> ); } }
import Cropper from 'react-cropper' import 'cropperjs/dist/cropper.css'
这两句分别引入Cropper组件和它的样式,Cropper组件还有一些经常使用的属性:npm
裁剪框底部还有一个按钮来确认是否裁剪,从上面咱们能够看到其绑定的事件:antd
cropImage() {
if (this.cropper.getCroppedCanvas() === 'null') { return false } this.props.getCropData(this.cropper.getCroppedCanvas().toDataURL()) }
this.cropper使咱们使用的react的ref属性保存的Cropper组件的DOM节点的引用,不清楚的能够去看React官方文档,这个组件提供了一个getCroppedCanvas()方法,这个方法返回的是裁剪获得的图片,咱们能够使用ide
toDataURL()方法将其转化为Base64编码上传到上一级的组件。ui