Angular实现图片裁剪工具ngImgCrop实践

 更新时间:2017年08月17日 14:20:43   作者:smilingCoder  
本篇文章主要介绍了Angular实现图片裁剪工具ngImgCrop实践,具有一定的参考价值,有兴趣的可以了解一下

ngImgCrop是AngularJS的一个图片裁剪插件,它实际上是一个封装好的AngularJs指令,可以让用户以圆框或者方框来裁剪图片

1、使用效果截图

  

2、demo演示

demo演示地址 http://jsfiddle.net/alexk111/rw6q9/

3、下载安装

可以使用两种方式来下载ngImgCrop插件

a、GitHub下载:git clone https://github.com/alexk111/ngImgCrop.git

b、bower安装,如果项目中使用了bower,使用命令bower install ngImgCrop即可

4、添加js和css依赖到项目中

<script src="angular.js"></script>
<script src="ng-img-crop.js"></script>
<link rel="stylesheet" type="text/css" href="ng-img-crop.css" rel="external nofollow" rel="external nofollow" >

5、添加AngularJs依赖

var myAppModule = angular.module('MyApp', ['ngImgCrop']);

6、使用样例

<html>
<head>
 <script src="angular.js"></script>
 <script src="ng-img-crop.js"></script>
 <link rel="stylesheet" type="text/css" href="ng-img-crop.css" rel="external nofollow" rel="external nofollow" >
 <style>
  .cropArea {
   background: #E4E4E4;
   overflow: hidden;
   width:500px;
   height:350px;
  }
 </style>
 <script>
  angular.module('app', ['ngImgCrop'])
   .controller('Ctrl', function($scope) {
    $scope.myImage='';
    $scope.myCroppedImage='';

    var handleFileSelect=function(evt) {
     var file=evt.currentTarget.files[0];
     var reader = new FileReader();
     reader.onload = function (evt) {
      $scope.$apply(function($scope){
       $scope.myImage=evt.target.result;
      });
     };
     reader.readAsDataURL(file);
    };
    angular.element(document.querySelector('#fileInput')).on('change',handleFileSelect);
   });
 </script>
</head>
<body ng-app="app" ng-controller="Ctrl">
 <div>Select an image file: <input type="file" id="fileInput" /></div>
 <div class="cropArea">
  <img-crop image="myImage" result-image="myCroppedImage"></img-crop>
 </div>
 <div>Cropped Image:</div>
 <div><img ng-src="{{myCroppedImage}}" /></div>
</body>
</html>

7、属性介绍

<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>

8、注意点

结果文件是base64的格式,如果是直接展示的话没有问题,如果是以文件格式要将图片上传给后台服务器,那么还需要将base64转换成图片文件格式,附上我自己的转换代码

$scope.file可直接作为File文件格式上传至后台服务器

function getBlobBydataURL(dataURI,type){
      var binary = atob(dataURI.split(',')[1]);
      var array = [];
      for(var i = 0; i < binary.length; i++) {
        array.push(binary.charCodeAt(i));
      }
      return new Blob([new Uint8Array(array)], {type:type });
    }

    var $Blob = getBlobBydataURL($scope.myCroppedImage,"image/png");
    $scope.file = $Blob;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Angularjs在初始化未完毕时出现闪烁问题的解决方法分析

    Angularjs在初始化未完毕时出现闪烁问题的解决方法分析

    这篇文章主要介绍了Angularjs在初始化未完毕时出现闪烁问题的解决方法,结合实例形式分析了3种常用的闪烁问题解决方法,需要的朋友可以参考下
    2016-08-08
  • Angular Universal服务器端渲染避免 window is not defined错误消息

    Angular Universal服务器端渲染避免 window is not&

    这篇文章主要介绍了Angular Universal服务器端渲染避免 window is not defined错误消息,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • AngularJS修改model值时,显示内容不变的实例

    AngularJS修改model值时,显示内容不变的实例

    今天小编就为大家分享一篇AngularJS修改model值时,显示内容不变的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • 使用AngularJS处理单选框和复选框的简单方法

    使用AngularJS处理单选框和复选框的简单方法

    这篇文章主要介绍了使用AngularJS处理单选框和复选框的方法,在AngularJS表单的基础之上编写起来非常简单,需要的朋友可以参考下
    2015-06-06
  • AngularJS内置指令

    AngularJS内置指令

    这篇文章主要详细介绍了AngularJS内置指令的使用方法,非常详细,常用的一些指令操作都做了总结,有需要的小伙伴参考下
    2015-02-02
  • Angular4的输入属性与输出属性实例详解

    Angular4的输入属性与输出属性实例详解

    这篇文章主要介绍了Angular4的输入属性与输出属性,结合实例形式详细分析了Angular4输入属性与输出属性的概念、功能及相关使用技巧,需要的朋友可以参考下
    2017-11-11
  • Angular4如何自定义首屏的加载动画详解

    Angular4如何自定义首屏的加载动画详解

    Angular应用程序在首次加载根组件时会在浏览器的显示一个loading...动画,下面这篇文章主要给大家介绍了关于Angular4如何自定义首屏加载动画的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编来一起看看吧。
    2017-07-07
  • AngularJS基础 ng-readonly 指令简单示例

    AngularJS基础 ng-readonly 指令简单示例

    本文主要介绍AngularJS ng-readonly 指令,这里对ng-readonly指令的资料做了整理,有学习AngularJS 指令的同学可以参考下
    2016-08-08
  • webapp框架AngularUI的demo改造之路

    webapp框架AngularUI的demo改造之路

    这篇文章主要介绍了webapp框架AngularUI的demo改造之路,需要的朋友可以参考下
    2014-12-12
  • angular forEach方法遍历源码解读

    angular forEach方法遍历源码解读

    这篇文章主要为大家详细了angular forEach方法遍历源码,forEach()方法用于遍历对象或数组,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01

最新评论