React+Antd+Antd-Img-Crop实现上传固定大小的裁剪头像或者图片(且可控制图片数量)
见章知著
1024,程序员们节日快乐!本文主要讲述react配合antd以及antd-img-crop第三方库实现一个可控的图片上传功能。
运行项目
需要具有node环境
第三方库安装
1.antd(Upload)安装和初始化
1.1.在代码编辑器(vsCode或者其他编辑器)代开终端,输入命令行安装antd:
$ yarn add antd --save 或者 $ npm install antd --save
1.2.安装好antd后,修改src/App.css,在新建的项目中引入antd所需要的css样式:
@import '~antd/dist/antd.css';
antd的使用方式有多种,详细方式可以参考官方文档进行使用https://ant.design/docs/react/introduce-cn
2.antd-img-crop安装和初始化
2.1.在antd-img-crop官方文档中,我们优先安装和初始化这个组件:
$ npm i antd-img-crop --save 或者 $ yarn add antd-img-crop --save
在安装和初始化组件方式上,官方文档还有其他方式可以安装初始化组件,更多的安装方式可以参考官方文档:https://www.npmjs.com/package/antd-img-crop
2.2.安装好组件后,在项目中引入组件<ReactCrop />:
import ImgCrop from 'antd-img-crop';
代码实现
安装好相对应的组件后,根据组件官方文档中的简单Example书写实现属于自己的上传图片功能。话不多说,直接上代码:
import React, { Component } from 'react';
import ImgCrop from 'antd-img-crop'; //引入图片裁剪组件
import { Upload, Button, Modal, message } from 'antd'; //引入上传、按钮、弹窗等antd组件
//base64图片文件
function getBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => resolve(reader.result);
reader.onerror = error => reject(error);
});
}
class UploadImage extends Component {
state = {
previewVisible: false,
previewImage: '',
fileList: [],
};
//图片预览取消函数
handleCancel = () => this.setState({ previewVisible: false });
//图片预览弹窗函数
handlePreview = async file => {
if (!file.url && !file.preview) {
file.preview = await getBase64(file.originFileObj);
}
this.setState({
previewImage: file.url || file.preview,
previewVisible: true,
});
};
//上传文件改变时的状态,详情可以参考antd的Upload组件API参数
onChange = ({fileList}) => {
this.setState({ fileList });
};
render() {
const { previewVisible, previewImage, fileList } = this.state;
//根据官方属性定制化裁剪框大小固定的裁剪组件属性
const props = {
width: 500, //裁剪宽度
height: 300, //裁剪高度
resize: false, //裁剪是否可以调整大小
resizeAndDrag: true, //裁剪是否可以调整大小、可拖动
modalTitle: "上传图片", //弹窗标题
modalWidth: 600, //弹窗宽度
};
return (
<div>
<ImgCrop {...props}>
<Upload
name="file"
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
accept="image/*"
listType="picture"
fileList={fileList}
onPreview={this.handlePreview}
onChange={this.onChange}
>
{fileList.length >= 3 ? null : (<Button>添加图片</Button>)}
{/* {通过三木运算符判断文件列表fileList的长度来决定上传图片的数量,达到控制图片数量的功能} */}
</Upload>
</ImgCrop>
<Modal visible={previewVisible} footer={null} onCancel={this.handleCancel} title='Image-Show'>
<img alt="example" style={{ width: '100%' }} src={previewImage} />
</Modal>
</div>
);
}
}
export default UploadImage;
基本效果图

总结发言
本文以上就是个人在处理上传图片并裁剪需求的心路历程,如有任何不对的地方,还请各位大佬们指指点点!啊哈哈哈啊哈哈哈哈.........
React+Antd+Antd-Img-Crop实现上传固定大小的裁剪头像或者图片(且可控制图片数量)的更多相关文章
- React实战之Ant Design—Upload上传_附件上传
React实战之Ant Design—Upload上传_附件上传 Upload组件大家都在官方文档中看过了,但写的时候还是会遇到许多问题,一些新手看了文档后感觉无从下手,本文过多的简绍就不说了,直接看 ...
- wordpress多站点环境设置上传附件大小
多站点环境更改上传附件大小: php.ini post_max_size = 8M upload_max_filesize = 10M 另外,后台域名管理中设置/网络设置/可以设置上传文件大小. 代码 ...
- Net上传附件大小控控值(转)
Server Error 404 – File or directory not found. The resource you are looking for might have been rem ...
- 如何调整 php 应用的上传附件大小?
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- 视频(其他)下载+tomcat 配置编码+图片上传限制大小
视频下载:前台 jsp function downVideo(value,row,index){ return '<a href="<%=basePath%>admin/v ...
- kindeditor扩展粘贴图片功能&修改图片上传路径并通过webapi上传图片到图片服务器
前言 kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 而kindeditor却对图片的处理不够理想. 本篇博文需要解决的问题有两个: kindeditor扩展粘贴图片功 ...
- springboot上传文件 & 不配置虚拟路径访问服务器图片 & springboot配置日期的格式化方式 & Springboot配置日期转换器
1. Springboot上传文件 springboot的文件上传不用配置拦截器,其上传方法与SpringMVC一样 @RequestMapping("/uploadPicture&q ...
- kindeditor扩展粘贴截图功能&修改图片上传路径并通过webapi上传图片到图片服务器
前言 kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 而kindeditor却对图片的处理不够理想. 本篇博文需要解决的问题有两个: kindeditor扩展粘贴图片功 ...
- CRM4.0 上传附件大小限制
问题背景: 上传附件大小默认为 5M 可以通过以下设置修改其大小 : "设置"--〉“管理”--〉“系统设置”--〉“电子邮件”--〉“设置附件文件的大小限制”
随机推荐
- Elastic Stack 笔记(二)Elasticsearch5.6 安装 IK 分词器和 Head 插件
博客地址:http://www.moonxy.com 一.前言 Elasticsearch 作为开源搜索引擎服务器,其核心功能在于索引和搜索数据.索引是把文档写入 Elasticsearch 的过程, ...
- 【数据结构】什么是AVL树
目录 什么是AVL树 1. 什么是AVL树 2. 节点的实现 3. AVL树的调整 3.1 LL旋转 3.2 RR旋转 3.3 RL旋转 3.4 LR旋转 什么是AVL树 二叉查找树的一个局限性就是有 ...
- 不fq安装 golang tools
go get -u -v github.com/golang/tools/go/buildutil ln -s $GOPATH/src/github.com/golang/tools $GOPATH/ ...
- 不知道如何实现服务的动态发现?快来看看 Dubbo 是如何做到的
上篇文章如果有人问你 Dubbo 中注册中心工作原理,就把这篇文章给他大致了解了注册中心作用以及 Dubbo Registry 模块源码,这篇文章将深入 Dubbo ZooKeeper 模块,去了解如 ...
- 两个变量交换数字 不用第三个变量的情况下 int a = 5,b = 6
今天可是涨见识额 记录一下 第一种方法: a=a+bb=a-ba=a-b 第二种: b= a+(a=b)*0 一句话搞定
- ORM组件LogORM使用指北
LogORM是一个对数据库进行对象关系映射的ORM组件.当对数据库进行增删改操作时,组件会自动进行日志记录. 该组件支持.Net平台和.NetCore平台,支持SQL Server.Oracle.My ...
- Mybaits-从零开始-Spring、Spring MVC、MyBatis整合(未万待续)
Spring.Spring MVC.MyBatis整合(未万待续)
- Vsftp服务-实战案例
Vsftp 实验案例一:(本地用户) 试验版本:Linux7.X版本 公司内部现在有一台FTP 和WEB 服务器,FTP 的功能主要用于维护公司的网站内容,包括上传文 件.创建目录.更新网页等等.公司 ...
- 设计模式——统一建模语言UML
目录 一.UML的结构 1.1视图 1.2图 1.3模型元素 二.类图 2.1类与类图 2.2类之间的关系 三.序列图 3.1序列图定义 3.2序列图组成元素与绘制 四.状态图 4.1状态图定义 4. ...
- Maven私服Nexus的搭建
# Maven私服Nexus的搭建 ## 私服存在的合理性 Maven中的依赖是从服务器仓库中下载的,Maven的仓库只有两大类: - 1) 本地仓库 - 2) 远程仓库,其中在远程仓库中又分成了3种 ...