上传头像插件

目的: 帮助开发者快速开发上传头像功能点

背景: 现在b,g能搜到的头像上传插件并不太好用,所以想提供一个比较自由度的上传并且可以剪切的插件。

资源: 具体资源请查看这里

实现大致思路如下:

  1. 先有一个上传的(本地上传的功能),然后获取图片的地址。
  2. 获取图片地址之后,进行截取图片(这里推荐一个插件)点这里,具体怎么用就不再赘述。
  3. 等截取图片之后,需要将截取的文件转换为二进制大文件。$('#image').cropper('getCroppedCanvas').toBlob();
  4. 调取接口,将二进制大文件上传即可。

直接上代码:

  1. 先引入如下文件
cropper.js [点这里](https://github.com/fengyuanchen/cropperjs)复制代码
  1. 具体业务代码
 $(function () {var URL = window.URL || window.webkitURL;var $image = $('#image');var $rotate = $('#userImg_rotate');var $reUpload = $('#userImg_reUpload');var $zoomOut = $('#userImg_zoomOut');var $zoomIn = $('#userImg_zoomIn');var $save = $('#userImg_save');var croppable = false;var $previews = $('.userImg_preview');var options = {aspectRatio: 1,viewMode: 1,built: function () {croppable = true;},build: function (e) {var $clone = $(this).clone();$clone.css({display: 'block',width: '100%',minWidth: 0,minHeight: 0,maxWidth: 'none',maxHeight: 'none'});$previews.css({width: '100%',overflow: 'hidden'}).html($clone);},crop: function (e) {var imageData = $(this).cropper('getImageData');var previewAspectRatio = e.width / e.height;$previews.each(function () {var $preview = $(this);var previewWidth = $preview.width();var previewHeight = previewWidth / previewAspectRatio;var imageScaledRatio = e.width / previewWidth;$preview.height(previewHeight).find('img').css({width: imageData.naturalWidth / imageScaledRatio,height: imageData.naturalHeight / imageScaledRatio,marginLeft: -e.x / imageScaledRatio,marginTop: -e.y / imageScaledRatio});});}};var originalImageURL = $scope.userInfo_imgUrl;var uploadedImageURL;$scope.initCropper = function(){// init$image.attr('src',$scope.userInfo_imgUrl).cropper(options);};// rotate$rotate.on('click', function(){$image.cropper('rotate', 90);});// zoomOut$zoomOut.on('click',function(){$image.cropper('zoom', -0.1);});// zoomIn$zoomIn.on('click',function(){$image.cropper('zoom', 0.1);});// Move/*$move.on('click',function(){$image.cropper('setDragMode');});*/// reUpload$reUpload.on('click',function(){$image.cropper('destroy').attr('src', $scope.userInfo_imgUrl).cropper(options);if (uploadedImageURL) {URL.revokeObjectURL(uploadedImageURL);uploadedImageURL = '';}});// Keyboard$(document.body).on('keydown', function (e) {if (!$image.data('cropper') || this.scrollTop > 300) {return;}switch (e.which) {case 37:e.preventDefault();$image.cropper('move', -1, 0);break;case 38:e.preventDefault();$image.cropper('move', 0, -1);break;case 39:e.preventDefault();$image.cropper('move', 1, 0);break;case 40:e.preventDefault();$image.cropper('move', 0, 1);break;}});// 剪切和确定上传图片$save.on('click',function(){common.Loading.show();$('#image').cropper('getCroppedCanvas').toBlob(function (blob) {var formData = new FormData();formData.append('photoFile', blob);// 这里写入后端给你的上传接口$.ajax(API_URL+'', {method: "POST",data: formData,headers: {'auth-token' : common.Cookie.get('token')},processData: false,contentType: false,success: function (res) {common.Loading.hide();common.Toast.show('头像上传成功!');try{$scope.$apply(function(){$scope.isShowUnCompleteInfoBox = false;$scope.isShowCompleteInfoBox = false;$scope.userInfo_imgUrl = res.data;})}catch(err){console.log(err)}},error: function () {common.Toast.show('头像上传失败!');}});});})// 上传图片,这里传本地的图片并且获取一个本地图片的路径var $inputImage = $('#inputImage');if (URL) {$inputImage.change(function () {var files = this.files;var file;if (!$image.data('cropper')) {return;}if (files && files.length) {file = files[0];if (/^image\/\w+$/.test(file.type)) {if (uploadedImageURL) {URL.revokeObjectURL(uploadedImageURL);}uploadedImageURL = URL.createObjectURL(file);$image.cropper('destroy').attr('src', uploadedImageURL).cropper(options);$inputImage.val('');} else {common.Toast.show('请选择图片再上传!')}}});} else {$inputImage.prop('disabled', true).parent().addClass('disabled');}});复制代码

截取图片生成头像插件相关推荐

  1. vue uni-app 裁剪图片(裁剪头像)插件vue-image-cropper

    一.项目预览. 效果: 一个手指拖动,可以移动图片,两个手指拖动可以缩放. 下载该项目: git clone https://github.com/Q956164483/vue-image-cropp ...

  2. imgcook设计稿生成代码插件

    Sketch/PSD/静态图片生成代码插件 imgcook 是专注以各种图像(Sketch/PSD/静态图片)为原材料烹饪的匠心大厨,通过智能化手段将各种视觉稿一键生成可维护的 UI 视图代码,期望此 ...

  3. js截取图片 裁剪图片之cropper.js插件用法详解

    js截取图片 裁剪图片之cropper.js插件用法详解 源码:https://github.com/fengyuanchen/cropper 引入+使用 <link href="/p ...

  4. 虚拟文字内容、图片、头像生成工具

    现在设计行业是非常注重版权的,不是随便拿张素材.图片就能放到你的设计稿上面去哦,所以设计达人网一直坚持寻找版权免费使用的素材给大家!不过今天主要是不是素材,而且分享一些虚拟文字.图片.头像生成工具,比 ...

  5. Vue自动生成文字头像插件

    在开发过程中,我们有时需要为新注册用户自动生成一个头像,就像gitee中一样,此时,我们可以使用vue中的一个插件:vue-avatar,该插件的使用方法如下: 1.下载插件 2.在需要生成文字头像的 ...

  6. java代码:通过名称生成企业名称或者是个人的名字生成头像

    我们经常会看看钉钉这个办公软件,如果你没有传头像上去,他会默认生成一个带有你的名字的头像,这个是怎么生成的呢,有很多需求里面可能也会有 这个要求,就是通过一个名词生成一个头像,接下来我和大家说一下具体 ...

  7. 10款WordPress头像插件

    http://paranimage.com/10-wordpress-plugins-for-avatar/ 多试试:多试试-计算机技术与软件 10款WordPress头像插件 要让你的访客或留言者感 ...

  8. ios 图片居中裁剪_iOS 根据UIImage 修改UIImageView Frame (包括截取图片中间部分)...

    iOS UIImageView 根据需求调整frame 1.图片的宽和高不相等,截取图片的中间部分,截取的部分Size明确 2.图片的宽度要等于其父视图的类的宽度,然后根据宽度计算高度,保证 图片不变 ...

  9. React 头像插件 react-avatar-editor 的使用

    前端源码: 建议配合 图像压缩插件使用, 压缩后再对imageOrigin赋值操作,不然会很卡. 推荐使用这个插件, zhuanlan.zhihu.com/p/38006124 该插件使用异步方法获取 ...

最新文章

  1. Web.Config文件配置之限制上传文件大小和时间
  2. Puppet基础篇3-安装Puppet前期的准备工作
  3. apache2配置和使用
  4. WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED解决方法
  5. webapi添加html页面,如何从WebApi动作返回html页面?
  6. 皖南医学院2020C语言试卷,安徽继续教育在线 - 皖南医学院
  7. 如何上传本地图片到PictureBox控件
  8. Phaser开源2d引擎 javascript/html5游戏框架
  9. mvc @html.action() 跨area调用controller 中的action
  10. Python统计模块statistics用法精要
  11. Python基础——元组与列表
  12. android添加工程依赖工程,Android Studio为项目加上模块依赖的图文方法
  13. Kotlin基本类型
  14. 基于AIML2.0写一个机器人
  15. Android 视频直播 ( 从快播到直播,从高清到无码 )十年视频开发项目
  16. 前沿重器[25] | 聊聊对话系统:多轮对话
  17. Java 汉字繁体转简体
  18. 孔子做人精要,看完启发很多
  19. android 本地存储数组,安卓与iphone自带浏览器对本地存储的支持
  20. DZ导航栏目参数说明

热门文章

  1. 阅读笔记一之《软件需求与分析》
  2. lintcode:最小编辑距离
  3. Android中的音频播放(MediaPlayer和SoundPool)
  4. windows下mongodb安装与使用整理
  5. U-Boot源码目录分析(VScode工程创建及文件夹过滤)
  6. 全国计算机等级考试题库二级C操作题100套(第41套)
  7. 三线调速风扇原理_学修电风扇~风机转速慢、调速失灵故障维修。
  8. 单列多行转单行单列合并oracle_oracle中多行转单行的两种方法
  9. java shape类_Java——Shape类
  10. 事务概念和事务四大特性和隔离级别