首页 > 编程 > JavaScript > 正文

详解ionic本地相册、拍照、裁剪、上传(单图完全版)

2019-11-19 15:12:11
字体:
来源:转载
供稿:网友

网络上已有的ionic图片选择上传博客碎片化过于严重,功能残缺或者引入了一些不必要的插件。这次以项目为契机,把ionic的图片选择、裁剪、上传整合一下,多图上传请戳ionic选择多张图片上传

插件安装

cordova plugin add cordova-plugin-camera //用于通过相机、相册选择图片并完成裁剪cordova plugin add cordova-plugin-file-transfer //用于上传图片到服务器

将功能封装为服务

angular.module('starter.services', [])//文件上传.factory('UploadFile', function(Toast) { return { /**  * 上传文件到服务器  *  * @param fileUrl 文件路径  * @param server 服务器接口  */ uploadFile: function(fileUrl, server) {  document.addEventListener("deviceready", onDeviceReady, false);  function onDeviceReady() {  var options = new FileUploadOptions();  options.fileKey = "BeanYon";  options.fileName = fileUrl.substr(fileUrl.lastIndexOf('/') + 1);  options.mimeType = "image/jpeg";  options.chunkedMode = false;  var params = {account: localStorage.account};  options.params = params;  var ft = new FileTransfer();  ft.upload(fileUrl,      encodeURI(server),      success,      err,      options);  }  function success(r){  Toast.show("设置头像成功");  }  function err(error){  Toast.show("上传头像失败,请确保网络正常后再试");  } } }})//配置单张图片选择.factory('SelectPicture', function(UploadFile, Toast) { return { /**  * 从相机或图库选择一张图片  *   * @param type 选择类型,0 拍照,1 相册  * @param width 目标宽度  * @param height 目标高度  * @param scope $scope对象  */ chooseSinglePicture: function(type, width, height, scope) {  document.addEventListener("deviceready", onDeviceReady, false);  function onDeviceReady() {  var options = {//相机配置   targetWidth: width,   targetHeight: height,   quality: 100,   allowEdit: true  }  if(type == 1){//图片源设置为相册   options.sourceType = 2;  }  navigator.camera.getPicture(   function(res){   scope.avatar_src = res;   scope.$apply();   localStorage.avatar = res;   UploadFile.uploadFile(res, "我的服务器地址");//传递自己的服务器接口地址   }, function(res){   Toast.show("选择头像失败");   }, options  );  } }, /**  * 从图库选择多张图片  */ choosePictures: function() {  window.imagePicker.getPictures(function(res){  alert(res+",success");  }, function(res){  alert(res+",failed");  }, {  maximumImagesCount: 10,   width: 80,   height: 80,   quality: 80   }); } }});

调用服务

angular.module('starter.controllers', []).controller('MyCtrl', function($scope, $state, $ionicActionSheet, UploadFile,Toast, SelectPicture) { $scope.avatar_src = "img/default_avatar.jpg"; /** *选择头像 */ $scope.selectAvatar = function(){ // 显示操作表 $ionicActionSheet.show({  buttons: [  { text: '<p style="font-size: 18px;">拍照<p>' },  { text: '<p style="font-size: 18px;">从相册选择<p>' },  ],  buttonClicked: function(index) {  //设置头像  SelectPicture.chooseSinglePicture(index, 120, 120, $scope);  return true;  } }); }})

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表