React+Antd+Antd-Img-Crop实现上传固定大小的裁剪头像或者图片(且可控制图片数量)



见章知著

  1024,程序员们节日快乐!本文主要讲述react配合antd以及antd-img-crop第三方库实现一个可控的图片上传功能。

运行项目

  需要具有node环境

第三方库安装

 1.antd(Upload)安装和初始化

  1.1.在代码编辑器(VS-Code或者其他编辑器)代开终端,输入命令行安装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;

总结发言

  本文以上就是个人在处理上传图片并裁剪需求的心路历程,如有任何不对的地方,还请各位大佬们指指点点!啊哈哈哈啊哈哈哈哈.........

原文地址:https://www.cnblogs.com/BlueBerryCode/p/11734267.html

时间: 2024-10-03 05:13:25

React+Antd+Antd-Img-Crop实现上传固定大小的裁剪头像或者图片(且可控制图片数量)的相关文章

ASP.NET图片上传,加水印文字和水印图片!

看了清清月儿的这篇文章让自己受益匪浅,但是觉得还有一些问题.上传图片后还有原来的图片文件存在,觉得这样很不爽,调用file类的delete方法删除原来没有生成水印的图片另外自己又加了一个限制图片大小的函数 1.最简单的单文件上传(没花头) 效果图:说明:这是最基本的文件上传,在asp.net1.x中没有这个FileUpload控件,只有html的上传控件,那时候要把html控件转化为服务器控件,很不好用.其实所有文件上传的美丽效果都是从这个FileUpload控件衍生,第一个例子虽然简单却是根本

kindeditor扩展粘贴图片功能&amp;修改图片上传路径并通过webapi上传图片到图片服务器

前言 kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 而kindeditor却对图片的处理不够理想. 本篇博文需要解决的问题有两个: kindeditor扩展粘贴图片功能 kindeditor修改图片上传路径并通过webapi上传图片到图片服务器(支持分布式图片) 结果演示 1.扩展粘贴图片功能演示 2.修改图片上传路径演示: 我们的网站演示地址是:http://localhost:9393/ 我们的图片服务器地址是:http://localhost:9394/

IIS7.0上传在大小限制

修改 IIS7的上传文件大小限制的方法: 1.打开IIS管理器,并定位于想要修改限制的网站 2.双击右侧窗口中的asp图标 3.展开最下面那个"限制属性",将最下面的"最大请求实体主体限制"右边属性框内修改成你想要的值(注意:单位为"字节"),如1g则修改为1073741824 4.点击窗口右上角的应用,关闭IIS管理器,如此而已 经过与IIS7的接触发现iis7的确比IIS6更人性化了,其它方面不说,微软在这方面做的还不错.修改好之后,点击右上

视频(其他)下载+tomcat 配置编码+图片上传限制大小

视频下载:前台 jsp function downVideo(value,row,index){ return '<a href="<%=basePath%>admin/video/video!fileDown.ds?uname='+row.uname+'&filepath='+value+'">下载</a>'; } 后台java : action: public void fileDown() { FileUtil.download(fil

CRM4.0 上传附件大小限制

问题背景: 上传附件大小默认为 5M 可以通过以下设置修改其大小 : "设置"--〉“管理”--〉“系统设置”--〉“电子邮件”--〉“设置附件文件的大小限制”

wordpress多站点环境设置上传附件大小

多站点环境更改上传附件大小: php.ini post_max_size = 8M upload_max_filesize = 10M 另外,后台域名管理中设置/网络设置/可以设置上传文件大小. 代码是在upload_size_limit_filter处理

一般网站上传图片的大小是多少?网站图片上传格式大小建议 附带简单修图方法

一般网站上传图片的大小是多少呢?尚网汇智给您列一下网站图片上传格式大小建议: 首先,上传图片格式: 通常图片以JPG图片居多,JPG格式的图片较小,图片也比较柔和 不过特殊情况就要用特殊格式的图片了 如1:图片为动画形式,则可以使用GIF动画格式,存成JPG图片就不会动了 如2:图片为透明或半透明格式,则建议使用24位PNG格式图片,兼容性更好,边缘也显示得更好 然后,就是上传图片的大小问题了: 通常,尚网汇智开发网站时会在后台对各栏目需要上传图片的地方做对应标记(例:最佳尺寸:宽100像素 *

OA系统默认上传附件大小限制

OA系统默认上传附件大小限制为200M,但可以修改.用记事本打开 d:\MYOA\bin\php.ini,找到 upload_max_filesize = 200M改为300M等并保存,然后使用OA服务监视器,重启Office Anywhere服务即可生效

springboot上传文件 &amp; 不配置虚拟路径访问服务器图片 &amp; springboot配置日期的格式化方式

1.    Springboot上传文件 springboot的文件上传不用配置拦截器,其上传方法与SpringMVC一样 @RequestMapping("/uploadPicture") @ResponseBody public JSONResultUtil uploadPicture(MultipartFile file, Integer viewId) { if (file == null) { return JSONResultUtil.error("文件没接到&q