摘要:获取图片地址之后,进行截取图片这里推荐一个插件点这里,具体怎么用就不再赘述。等截取图片之后,需要将截取的文件转换为二进制大文件。调取接口,将二进制大文件上传即可。
上传头像插件
目的: 帮助开发者快速开发上传头像功能点
背景: 现在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"); } });
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/88805.html
摘要:获取图片地址之后,进行截取图片这里推荐一个插件点这里,具体怎么用就不再赘述。等截取图片之后,需要将截取的文件转换为二进制大文件。调取接口,将二进制大文件上传即可。 上传头像插件 目的: 帮助开发者快速开发上传头像功能点 背景: 现在b,g能搜到的头像上传插件并不太好用,所以想提供一个比较自由度的上传并且可以剪切的插件。 资源: 具体资源请查看这里 实现大致思路如下: 先有一个上传的...
摘要:做为网站前段开发人员来说,用户头像剪裁和上传是一个很常用的功能,一般这个功能涉及到图片的放大,缩小,移动,旋转,和剪裁。下面我们来做一个完整的,剪裁后的图片以的形式返回,怎么上传到后台服务器,很简单,这里不做介绍。 做为网站前段开发人员来说,用户头像剪裁和上传是一个很常用的功能,一般这个功能涉及到图片的放大,缩小,移动,旋转,和剪裁。下面我们来做一个完整的demo,剪裁后的图片以bas...
摘要:做为网站前段开发人员来说,用户头像剪裁和上传是一个很常用的功能,一般这个功能涉及到图片的放大,缩小,移动,旋转,和剪裁。下面我们来做一个完整的,剪裁后的图片以的形式返回,怎么上传到后台服务器,很简单,这里不做介绍。 做为网站前段开发人员来说,用户头像剪裁和上传是一个很常用的功能,一般这个功能涉及到图片的放大,缩小,移动,旋转,和剪裁。下面我们来做一个完整的demo,剪裁后的图片以bas...
摘要:实现原理简单,纯技术处理图片,几乎不需要用到相关知识面向人群急于使用头像裁剪组件的同学。裁剪框初始宽高上传图片后,裁剪区将预设为最大裁剪范围。支持矩形裁剪目前九宫仅支持将图片裁剪为正方形,不能裁剪为矩形,该功能将在后续优化。 项目简介 本组件是vue下的头像裁剪组件,可以直接拷贝代码使用,无需安装依赖 使用九宫格进行裁剪,自由选择裁剪区域。 实时预览裁剪后效果。 可以将裁剪好的图片,...
阅读 909·2021-09-09 09:32
阅读 2848·2021-09-02 10:20
阅读 2683·2021-07-23 11:24
阅读 823·2019-08-30 15:54
阅读 3630·2019-08-30 15:54
阅读 1345·2019-08-30 11:02
阅读 2843·2019-08-26 17:40
阅读 1122·2019-08-26 13:55