React 头像插件 react-avatar-editor 的使用
前端源码:
- 建议配合 图像压缩插件使用, 压缩后再对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 的使用相关推荐
- sublime jsx html插件,Sublime Text3关于react的插件——react语法提示代码格式化
背景: 最近因为项目准备迁移切换技术栈到react~所以研究了一波sublime关于react的插件,很多推荐已经写得很详细,这里就补充一下语法提示和代码格式化的插件. 1.sublime-react ...
- react 时刻表插件_React“啊哈”的时刻
react 时刻表插件 As a teacher, one of my main goals is to maximize people's "aha" moments. 作为一名 ...
- react 用html插件,React配置过程中用到的插件汇总
●react插件 ●react-dom插件 ●react-router插件 ●react-redux插件 ●babel插件 ●webpack插件 ●loader插件 ●jquery插件 ●moment ...
- php 截图插件,react中有实现截图插件吗
react中有实现截图插件,如react截图组件"react-cropper",该组件可以实现图片裁剪功能,其使用方法是:首先安装"react-cropper" ...
- react开发插件-ES7 React/Redux/GraphQL/React-Native snippets
内容目录 ES7 React/Redux/GraphQL/React-Native snippets 插件 Basic Methods React React Native Redux PropTyp ...
- React - 分页插件默认是英文怎么办
React - 分页插件默认是英文怎么办 英文组件的通用解决方案 英文组件的通用解决方案 这里以分页插件为例: 大家可以看到,最后的这个页面跳转提示文字为Go to,不是中文,而官网里面的案例则是: ...
- react styled-components插件完成独立组件css样式(js重构css写法)
1.安装cnpm install styled-components --save2.创建js文件,写全局样式import {createGlobalStyle} from 'styled-compo ...
- react jquery_2019年React简介(面向仅了解jQuery的人们)
react jquery by Julien Benchetrit 通过朱利安·贝肯特里特 2019年React简介(面向仅了解jQuery的人们) (An Introduction to React ...
- 从零开始React:一档 React环境搭建,语法规则,基础使用
手挽手带你学React入门第一期,带你熟悉React的语法规则,消除对JSX的恐惧感,由于现在开发中都是使用ES6语法开发React,所以这次也使用ES6的模式进行教学,如果大家对ES6不熟悉的话,先 ...
最新文章
- 博客园2013年4月份第2周源码发布详情
- 如何进行基因组组装?
- oracle object_type,Oracle TYPE OBJECT详解 | 学步园
- Sublime Text 3 插件的安装、升级和卸载
- 微服务业务体系内对复用的深度探讨
- PDF文件转jpg格式图片
- boost::graph::dimacs_basic_reader用法的测试程序
- 牛津英语3a_空中课堂 | 牛津英语学霸笔记3A M3U2
- 新闻网大数据实时分析可视化系统项目——7、Kafka分布式集群部署
- python模块名不规范如何导入_如何强制Python的“导入”将名称视为模块,而不是函数?...
- android高德天气api,天气预报-天气预报-示例中心-JS API 2.0 示例 | 高德地图API
- [Python]小甲鱼Python视频第037课(类和对象:面向对象编程 )课后题及参考解答
- 18Python标准库系列之logging模块
- 问题三十三:怎么用ray tracing画特殊长方体(box)
- Ubuntu18.04有线+离线划词翻译GoldenDict
- 从面向对象的api中识别软件组件(论文翻译)
- RabbitMQ三种Exchange
- 【深度干货】强化学习应用简述
- php源码加密 zend_zend_guard对PHP代码进行加密教程
- 微信小程序怎么添加到主屏幕将微信小程序放到手机桌面?
热门文章
- 用户态线程在AI中的应用
- sql获取一张表所有的字段_SQL语句19问
- 微型计算机显卡必须插在主板的,第一章 计算机基础知识(2)
- solr kerberos java_solr添加kerberos认证及授权
- 对于电单车同学们提出的改动建议
- 最温暖的大学,最火热的比赛
- STC单片机功率控制下载板
- mysql 对多列进行排序 分组_数据库的多列分组
- python底层代码里面的参数_梯度下降算法讲解及python底层实现
- ipython notebook_50个关于IPython的使用技巧,get起来!