ngImgCrop是AngularJS的一個圖片裁剪插件,它其實是一個封裝好的AngularJs指令,可讓用戶以圓框或者方框來裁剪圖片css
一、使用效果截圖html
二、demo演示git
demo演示地址 http://jsfiddle.net/alexk111/rw6q9/github
三、下載安裝web
可使用兩種方式來下載ngImgCrop插件express
a、GitHub下載:git clone https://github.com/alexk111/ngImgCrop.git服務器
b、bower安裝,若是項目中使用了bower,使用命令bower install ngImgCrop便可app
四、添加js和css依賴到項目中spa
1 <script src="angular.js"></script> 2 <script src="ng-img-crop.js"></script> 3 <link rel="stylesheet" type="text/css" href="ng-img-crop.css">
五、添加AngularJs依賴.net
var myAppModule = angular.module('MyApp', ['ngImgCrop']);
六、使用樣例
1 <html> 2 <head> 3 <script src="angular.js"></script> 4 <script src="ng-img-crop.js"></script> 5 <link rel="stylesheet" type="text/css" href="ng-img-crop.css"> 6 <style> 7 .cropArea { 8 background: #E4E4E4; 9 overflow: hidden; 10 width:500px; 11 height:350px; 12 } 13 </style> 14 <script> 15 angular.module('app', ['ngImgCrop']) 16 .controller('Ctrl', function($scope) { 17 $scope.myImage=''; 18 $scope.myCroppedImage=''; 19 20 var handleFileSelect=function(evt) { 21 var file=evt.currentTarget.files[0]; 22 var reader = new FileReader(); 23 reader.onload = function (evt) { 24 $scope.$apply(function($scope){ 25 $scope.myImage=evt.target.result; 26 }); 27 }; 28 reader.readAsDataURL(file); 29 }; 30 angular.element(document.querySelector('#fileInput')).on('change',handleFileSelect); 31 }); 32 </script> 33 </head> 34 <body ng-app="app" ng-controller="Ctrl"> 35 <div>Select an image file: <input type="file" id="fileInput" /></div> 36 <div class="cropArea"> 37 <img-crop image="myImage" result-image="myCroppedImage"></img-crop> 38 </div> 39 <div>Cropped Image:</div> 40 <div><img ng-src="{{myCroppedImage}}" /></div> 41 </body> 42 </html>
七、屬性介紹
<img-crop image="{string}" 須要進行裁剪的圖片文件 如$scope.myImage result-image="{string}" 保存裁剪結果的圖片文件 如$scope.myCroppedImage [change-on-fly="{boolean}"] 可選項:表示是否在拖拽裁剪區域時實時更新結果文件 [area-type="{circle|square}"] 可選項:表示裁剪窗口是方的仍是圓的,默認是圓的 [area-min-size="{number}"] 可選項,表示裁剪結果的最小大小,默認是80,即結果最小是高80像素、寬80像素 [result-image-size="{number}"] 可選項,表示裁剪結果大小,默認是200,即高200像素、寬200像素 [result-image-format="{string}"] 可選項,表示裁剪結果保存的文件類型,能夠選擇image/jpeg、image/png、image/webp,默認是image/png [result-image-quality="{number}"] 可選項,表示裁剪結果的質量,取值在0.0到1.0之間 [on-change="{expression}"] 可選項,檢測到圖片修改後執行的表達式
[on-load-begin="{expression"] 可選項,圖片開始加載執行的表達式 [on-load-done="{expression"] 可選項,圖片加載完成執行的表達式 [on-load-error="{expression"] 可選項,圖片加載失敗執行的表達式 ></img-crop>
八、注意點
結果文件是base64的格式,若是是直接展現的話沒有問題,若是是以文件格式要將圖片上傳給後臺服務器,那麼還須要將base64轉換成圖片文件格式,附上我本身的轉換代碼
$scope.file可直接做爲File文件格式上傳至後臺服務器
1 function getBlobBydataURL(dataURI,type){ 2 var binary = atob(dataURI.split(',')[1]); 3 var array = []; 4 for(var i = 0; i < binary.length; i++) { 5 array.push(binary.charCodeAt(i)); 6 } 7 return new Blob([new Uint8Array(array)], {type:type }); 8 } 9 10 var $Blob = getBlobBydataURL($scope.myCroppedImage,"image/png"); 11 $scope.file = $Blob;