截取图片生成头像插件
来源:互联网 发布:淘宝怎么绑定银行卡 编辑:程序博客网 时间:2024/05/21 11:23
上传头像插件
目的: 帮助开发者快速开发上传头像功能点
背景: 现在b,g能搜到的头像上传插件并不太好用,所以想提供一个比较自由度的上传并且可以剪切的插件。
资源: 具体资源请查看这里
实现大致思路如下:
- 先有一个上传的(本地上传的功能),然后获取图片的地址。
- 获取图片地址之后,进行截取图片(这里推荐一个插件)点这里,具体怎么用就不再赘述。
- 等截取图片之后,需要将截取的文件转换为二进制大文件。$(‘#image’).cropper(‘getCroppedCanvas’).toBlob();
- 调取接口,将二进制大文件上传即可。
直接上代码:
- 先引入如下文件
cropper.js [点这里](https://github.com/fengyuanchen/cropperjs)
- 具体业务代码
$(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'); } });
阅读全文
0 0
- 截取图片生成头像插件
- js 头像上传(图片截取) 插件 全屏高清版 源码
- shearphoto2.0头像截取插件
- cropper插件实现头像截取
- 截取圆形图片做头像
- mvc4 截取上传图片做头像,自动生成不同小尺寸缩略图 (地址)
- mvc4 截取上传图片做头像,自动生成不同小尺寸缩略图
- php jquery 头像截取插件2.0
- Android 图片截取人物头像(仿逗拍)
- <<爬坑一>>有关上传头像中的截取图片
- SWFupload上传插件案例及头像的截取
- iOS 截取view生成图片
- Android:设置圆形头像,Android截取圆形图片
- Android个人中心的头像上传,图片编码及截取
- android用户头像截取
- android用户头像截取
- 仿QQ头像截取
- iOS怎样截取屏幕并生成图片?
- 最近三年零售市场最受欢迎品种分析
- vis.js介绍
- 深入理解高度。获取屏幕、webview、软键盘高度
- 3. Longest Substring Without Repeating Characters
- 编写SP的游标使用
- 截取图片生成头像插件
- code::blocks打开替换
- Qt 之 QButtonGroup Class
- Spring Boot:定制servlet filters
- 使用yum命令报错File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
- Effective Java 读书笔记(二):对于所有对象都通用的方法
- 关于 tomcat 集群中 session 共享的三种方法
- eclipse:A child container failed during start
- 无法对Image Service启用Java版SOE功能