前端源码:

  • 建议配合 图像压缩插件使用, 压缩后再对imageOrigin赋值操作,不然会很卡。
  • 推荐使用这个插件, zhuanlan.zhihu.com/p/38006124
  • 该插件使用异步方法获取到压缩后的图片的blob对象, blob转base64url很容易
var reader = new window.FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function(e) {var base64data = e.target.result;                console.log( base64data );}
复制代码
  • 我的双核I7处理器在加上了移动触发事件和调节range后巨卡无比。
  • 因此使用的小图片测试
import React, { Component } from 'react';
import './App.css';// 这个就是头像插件
import ReactAvatarEditor from 'react-avatar-editor';
//使用axios发给后端做一下测试
import axios from 'axios'class App extends Component {state = {range: 12,imageOrigin: "",imageResult: "",readerOrigin: new FileReader()}// 组件自带的获取结果事件onClickSave = () => {//获取 base64url格式结果const canvas = this.editor.getImage().toDataURL();//可以将这段base64url 字符串传给后端//显示结果 blob 对象fetch(canvas).then(res => res.blob()).then(blob => {this.img = window.URL.createObjectURL(blob)this.setState({ imageResult: this.img })})}// 从本机获取图片changeFile(e) {var file = e.target.files[0];this.state.readerOrigin.readAsDataURL(file);this.state.readerOrigin.onload = (e) => {this.setState({imageOrigin: e.target.result,});}}//图片上传到服务器onUpload() {//可以将这段base64url 字符串传给后端const canvas = this.editor.getImage().toDataURL();let params = new URLSearchParams();params.append('avatar', canvas);axios({method:"post",url:"http://localhost:12306/",data:params}).then(res=>{//alert('上传成功')}).catch(err=>{//alert('图片过大, 请使用小图片')})}render() {return (<div className="App">//输入头像位置<input type="file" onChange={(e) => { this.changeFile(e) }} />//组件位置<ReactAvatarEditorref={(node) => {this.editor = node;}}image={this.state.imageOrigin}width={200}height={200}border={50}borderRadius={125}color={[255, 255, 255, 0.6]} // RGBA//图片被放大的比例 (高度)scale={1 + this.state.range / 100}rotate={0}onMouseMove={(e) => {this.onClickSave()}}></ReactAvatarEditor><input type="range" onChange={(e) => {this.onClickSave()this.setState({ range: e.target.value })}}></input><button onClick={() => this.onClickSave()}>查看头像</button><button onClick={() => this.onUpload()}>确认上传</button>//图片查看区域<div style={{ width: "200px", height: "200px", border: "1px solid black" }}><img style={{ width: "100%", height: "100%" }} src={this.state.imageResult} alt="" /></div> </div>);}
}export default App;复制代码

后段测试源码:

const express = require('express');
const server = express();
const bodyParser = require('body-parser');server.use(bodyParser({limit: '0.5mb'}));
server.listen(12306);
server.use('/' , (req,res)=>{res.setHeader('Access-Control-Allow-Origin','*')console.log(req.body)
})
复制代码

待续...

React 头像插件 react-avatar-editor 的使用相关推荐

  1. sublime jsx html插件,Sublime Text3关于react的插件——react语法提示代码格式化

    背景: 最近因为项目准备迁移切换技术栈到react~所以研究了一波sublime关于react的插件,很多推荐已经写得很详细,这里就补充一下语法提示和代码格式化的插件. 1.sublime-react ...

  2. react 时刻表插件_React“啊哈”的时刻

    react 时刻表插件 As a teacher, one of my main goals is to maximize people's "aha" moments. 作为一名 ...

  3. react 用html插件,React配置过程中用到的插件汇总

    ●react插件 ●react-dom插件 ●react-router插件 ●react-redux插件 ●babel插件 ●webpack插件 ●loader插件 ●jquery插件 ●moment ...

  4. php 截图插件,react中有实现截图插件吗

    react中有实现截图插件,如react截图组件"react-cropper",该组件可以实现图片裁剪功能,其使用方法是:首先安装"react-cropper" ...

  5. react开发插件-ES7 React/Redux/GraphQL/React-Native snippets

    内容目录 ES7 React/Redux/GraphQL/React-Native snippets 插件 Basic Methods React React Native Redux PropTyp ...

  6. React - 分页插件默认是英文怎么办

    React - 分页插件默认是英文怎么办 英文组件的通用解决方案 英文组件的通用解决方案 这里以分页插件为例: 大家可以看到,最后的这个页面跳转提示文字为Go to,不是中文,而官网里面的案例则是: ...

  7. react styled-components插件完成独立组件css样式(js重构css写法)

    1.安装cnpm install styled-components --save2.创建js文件,写全局样式import {createGlobalStyle} from 'styled-compo ...

  8. react jquery_2019年React简介(面向仅了解jQuery的人们)

    react jquery by Julien Benchetrit 通过朱利安·贝肯特里特 2019年React简介(面向仅了解jQuery的人们) (An Introduction to React ...

  9. 从零开始React:一档 React环境搭建,语法规则,基础使用

    手挽手带你学React入门第一期,带你熟悉React的语法规则,消除对JSX的恐惧感,由于现在开发中都是使用ES6语法开发React,所以这次也使用ES6的模式进行教学,如果大家对ES6不熟悉的话,先 ...

最新文章

  1. 博客园2013年4月份第2周源码发布详情
  2. 如何进行基因组组装?
  3. oracle object_type,Oracle TYPE OBJECT详解 | 学步园
  4. Sublime Text 3 插件的安装、升级和卸载
  5. 微服务业务体系内对复用的深度探讨
  6. PDF文件转jpg格式图片
  7. boost::graph::dimacs_basic_reader用法的测试程序
  8. 牛津英语3a_空中课堂 | 牛津英语学霸笔记3A M3U2
  9. 新闻网大数据实时分析可视化系统项目——7、Kafka分布式集群部署
  10. python模块名不规范如何导入_如何强制Python的“导入”将名称视为模块,而不是函数?...
  11. android高德天气api,天气预报-天气预报-示例中心-JS API 2.0 示例 | 高德地图API
  12. [Python]小甲鱼Python视频第037课(类和对象:面向对象编程 )课后题及参考解答
  13. 18Python标准库系列之logging模块
  14. 问题三十三:怎么用ray tracing画特殊长方体(box)
  15. Ubuntu18.04有线+离线划词翻译GoldenDict
  16. 从面向对象的api中识别软件组件(论文翻译)
  17. RabbitMQ三种Exchange
  18. 【深度干货】强化学习应用简述
  19. php源码加密 zend_zend_guard对PHP代码进行加密教程
  20. 微信小程序怎么添加到主屏幕将微信小程序放到手机桌面?

热门文章

  1. 用户态线程在AI中的应用
  2. sql获取一张表所有的字段_SQL语句19问
  3. 微型计算机显卡必须插在主板的,第一章 计算机基础知识(2)
  4. solr kerberos java_solr添加kerberos认证及授权
  5. 对于电单车同学们提出的改动建议
  6. 最温暖的大学,最火热的比赛
  7. STC单片机功率控制下载板
  8. mysql 对多列进行排序 分组_数据库的多列分组
  9. python底层代码里面的参数_梯度下降算法讲解及python底层实现
  10. ipython notebook_50个关于IPython的使用技巧,get起来!