溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ionic本地相冊、拍照、裁剪、上傳的示例分析

發(fā)布時(shí)間:2021-07-24 11:23:05 來源:億速云 閱讀:246 作者:小新 欄目:web開發(fā)

這篇文章主要介紹ionic本地相冊、拍照、裁剪、上傳的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

網(wǎng)絡(luò)上已有的ionic圖片選擇上傳博客碎片化過于嚴(yán)重,功能殘缺或者引入了一些不必要的插件。這次以項(xiàng)目為契機(jī),把ionic的圖片選擇、裁剪、上傳整合一下,多圖上傳請戳ionic選擇多張圖片上傳

插件安裝

cordova plugin add cordova-plugin-camera //用于通過相機(jī)、相冊選擇圖片并完成裁剪
cordova plugin add cordova-plugin-file-transfer //用于上傳圖片到服務(wù)器

將功能封裝為服務(wù)

angular.module('starter.services', [])

//文件上傳
.factory('UploadFile', function(Toast) {
 return {
 /**
  * 上傳文件到服務(wù)器
  *
  * @param fileUrl 文件路徑
  * @param server 服務(wù)器接口
  */
 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("設(shè)置頭像成功");
  }

  function err(error){
  Toast.show("上傳頭像失敗,請確保網(wǎng)絡(luò)正常后再試");
  }
 }
 }
})

//配置單張圖片選擇
.factory('SelectPicture', function(UploadFile, Toast) {
 return {
 /**
  * 從相機(jī)或圖庫選擇一張圖片
  * 
  * @param type 選擇類型,0 拍照,1 相冊
  * @param width 目標(biāo)寬度
  * @param height 目標(biāo)高度
  * @param scope $scope對象
  */
 chooseSinglePicture: function(type, width, height, scope) {
  document.addEventListener("deviceready", onDeviceReady, false);
  function onDeviceReady() {
  var options = {//相機(jī)配置
   targetWidth: width,
   targetHeight: height,
   quality: 100,
   allowEdit: true
  }

  if(type == 1){//圖片源設(shè)置為相冊
   options.sourceType = 2;
  }

  navigator.camera.getPicture(
   function(res){
   scope.avatar_src = res;
   scope.$apply();
   localStorage.avatar = res;
   UploadFile.uploadFile(res, "我的服務(wù)器地址");//傳遞自己的服務(wù)器接口地址
   }, 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 
  });
 }
 }
});

調(diào)用服務(wù)

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 >拍照<p>' },
  { text: '<p >從相冊選擇<p>' },
  ],
  buttonClicked: function(index) {
  //設(shè)置頭像
  SelectPicture.chooseSinglePicture(index, 120, 120, $scope);
  return true;
  }
 });
 }
})

以上是“ionic本地相冊、拍照、裁剪、上傳的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI