基于angular的图片裁剪

template/cropper.html     //自定义标签
[html] view plain copy
  1. <div id="item" ng-show="size ==='sm' " class="cropme" style="width: 200px; height: 200px;">div>  


//angular.modal
[javascript] view plain copy
  1. .directive('cropper', [function () {  
  2.         return {  
  3.             restrict: 'AE',  
  4.             replace: true,  
  5.             templateUrl: 'template/apple/cropper/cropper.html',  
  6.             scope:{  
  7.                 size:'='  
  8.             },  
  9.             link: function (scope) {  
  10.                 $('.cropme').simpleCropper();  
  11.             }  
  12.         };  
  13.     }])  

所依赖的js  //  jquery.Jcrop.js,  jquery.SimpleCropper.js



html只需要写:

[html] view plain copy
  1. <cropper size="'sm'">cropper>  
  2. <button class="btn btn-primary" ng-click="uploadFile()">上传button>  
  3. <button class="btn btn-default" ng-click="removeimg()">移除button>  

size 是图片的尺寸  可以自己设置哦。

这是上传图片的方法  用到了 angularfileUpdate。

注 :文件上传时要添加依赖注入。

[javascript] view plain copy
  1. $scope.uploadFile = function () {  
  2.             var file = $("#imglogo").attr("src");//base64.  
  3.             console.log($scope.convertBase64UrlToBlob(file));//blob文件  
  4.             $upload.upload({  
  5.                 url:  config.backend.ip+"file/upload",  
  6.                 method: "POST",  
  7.                 headers: {  
  8.                 },  
  9.                 data: {},  
  10.                 file:$scope.convertBase64UrlToBlob(file)  
  11.             })  
  12.                 .progress(function (evt) {  
  13.                 })  
  14.                 .success(function (data) {  
  15.                     $scope.growl(data.message,'success');  
  16.                 })  
  17.                 .error(function (e, code) {  
  18.                     $scope.growl(e,'error');  
  19.                 });  
  20.   
  21.         };  
  22.   
  23.         $scope.convertBase64UrlToBlob = function(urlData){  
  24.   
  25.             var bytes=window.atob(urlData.split(',')[1]); //去掉url的头,并转换为byte  
  26.   
  27.             //处理异常,将ascii码小于0的转换为大于0  
  28.             var ab = new ArrayBuffer(bytes.length);  
  29.             var ia = new Uint8Array(ab);  
  30.             for (var i = 0; i < bytes.length; i++) {  
  31.                 ia[i] = bytes.charCodeAt(i);  
  32.             }  
  33.   
  34.             return new Blob( [ab] , {type : 'image/png'});  
  35.         };  


图片裁剪的原理 ,

把现有图片经过区域的选择,最后append一个img标签 src是裁剪后的base:64码  ,

上传文件是通过base:64 码转换成blob文件格式实现文件上传。

你可能感兴趣的:(Angular)