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


Posted in Javascript onAugust 17, 2017

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

1、使用效果截图

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

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;

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

Javascript 相关文章推荐
html下载本地
Jun 19 Javascript
js操作checkbox遇到的问题解决
Jun 29 Javascript
读取input:file的路径并显示本地图片的方法
Sep 23 Javascript
Javascript四舍五入Math.round()与Math.pow()使用介绍
Dec 27 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
Jul 27 Javascript
js 实现一些跨浏览器的事件方法详解及实例
Oct 27 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
Mar 08 Javascript
JS实现的加减乘除四则运算计算器示例
Aug 09 Javascript
基于JavaScript实现幸运抽奖页面
Jul 05 Javascript
Javascript实现一朵从含苞到绽放的玫瑰
Mar 30 Javascript
vue获取data数据改变前后的值方法
Nov 07 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
Jul 17 Javascript
jQuery Layer弹出层传值到父页面的实现代码
Aug 17 #jQuery
jQuery条件分页 代替离线查询(附代码)
Aug 17 #jQuery
vue中appear的用法
Aug 17 #Javascript
Angularjs单选框相关的示例代码
Aug 17 #Javascript
js实现简易聊天对话框
Aug 17 #Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
Aug 17 #Javascript
javascript 日期相减-在线教程(附代码)
Aug 17 #Javascript
You might like
php 连接mysql连接被重置的解决方法
2011/02/15 PHP
PHP中通过语义URL防止网站被攻击的方法分享
2011/09/08 PHP
php pthreads多线程的安装与使用
2016/01/19 PHP
PHP中的Trait 特性及作用
2016/04/03 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
JQuery实现自定义对话框的代码
2008/06/15 Javascript
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
jquery插件开发方法(初学者)
2012/02/03 Javascript
jquery获得option的值和对option进行操作
2013/12/13 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
Vue.js中数组变动的检测详解
2016/10/12 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
2016/12/15 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
Vue-Router模式和钩子的用法
2018/02/28 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
Python正则抓取网易新闻的方法示例
2017/04/21 Python
Python实现的计数排序算法示例
2017/11/29 Python
Django admin美化插件suit使用示例
2017/12/12 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
python 按不同维度求和,最值,均值的实例
2018/06/28 Python
python代码编写计算器小程序
2020/03/30 Python
Django中的模型类设计及展示示例详解
2020/05/29 Python
python时间time模块处理大全
2020/10/25 Python
使用HTML5的File实现base64和图片的互转
2013/08/01 HTML / CSS
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
大学生毕业的自我评价分享
2014/01/02 职场文书
礼貌问候语大全
2015/11/10 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python