Angular圖片裁剪工具ngImgCrop實踐

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;
相關文章
相關標籤/搜索