美文网首页Ionic2开发
Ionic2实战-拍照功能开发

Ionic2实战-拍照功能开发

作者: 逃离火星 | 来源:发表于2018-03-29 22:11 被阅读39次

前言

因为APP里面有一个类似于朋友圈的功能,需要给用户提供拍照或者选择本地照片然后发布的能力,我们今天就来讲一下如何在Ionic2 APP中实现调用本地摄像头的功能。不过注意,因为是涉及到客户端的,单纯的网页版是没有权限完成该功能的,所以本功能只有在Android或iOS客户端版本才可以用。

步骤

1、按照惯例安装Cordova插件

Image Picker(相册选择)

ionic plugin add https://github.com/Telerik-Verified-Plugins/ImagePicker

Camera(拍照)

ionic plugin add cordova-plugin-camera

Transfer(上传文件)

ionic plugin add cordova-plugin-file-transfer

2、通过摄像头上传文件的函数

  //
  // upload imgs by native camera
  uploadImgsByNativeCamera(type) {
    let options = {
      quality: 60,
      saveToPhotoAlbum: true,
      sourceType: 1,
      mediaType: 0,
      targetWidth: 1200,
      targetHeight: 1600,
    };
    if (type === 'library') {
      options.quality = 100;
      options.saveToPhotoAlbum = false;
      options.sourceType = 0;
      options.mediaType = 2;
    }

    Camera.getPicture(options).then((result) => {
      this.waiting = true;

      this.heyApp.utilityComp.presentLoading();
      console.log('the file', result);
      this.uploadFileByFileTransfer(result, this.heyApp.fileUploadService.imageUploadAPI);
    }, (err) => {
      console.log('Camera getPictures err', err);
    });
  }

  //
  // upload imgs by file transfer
  uploadFileByFileTransfer(file, api) {
    const fileTransfer = new Transfer();
    let options: any;
    options = {
      fileKey: 'file',
      fileName: file.replace(/^.*[\\\/]/, ''),
      headers: {},
    }

    fileTransfer.upload(file, api, options)
      .then((ret) => {
        this.waiting = false;

        this.heyApp.utilityComp.dismissLoading();
        let result = [{"uri": ret.response}];
        // merge imgs
        this.mergeImgs(result);
      }, (err) => {
        this.heyApp.utilityComp.dismissLoading();
        this.waiting = false;
      })
  }

3、通过选择本地相册上传文件的函数

  //
  // upload imgs by native library
  uploadImgsByNativeLibrary() {
    let options = {
      width: 1200,
      height: 1600,
    };
    ImagePicker.getPictures(options).then((results) => {
      this.waiting = true;


      for (var i = 0; i < results.length; i++) {
        this.heyApp.utilityComp.presentLoading();
        this.uploadFileByFileTransfer(results[i], this.heyApp.fileUploadService.imageUploadAPI);
      }
    }, (err) => {
      console.log('ImagePIcker getPictures err', err);
    });
  }

  //
  // upload imgs by file transfer
  uploadFileByFileTransfer(file, api) {
    const fileTransfer = new Transfer();
    let options: any;
    options = {
      fileKey: 'file',
      fileName: file.replace(/^.*[\\\/]/, ''),
      headers: {},
    }

    fileTransfer.upload(file, api, options)
      .then((ret) => {
        this.waiting = false;

        this.heyApp.utilityComp.dismissLoading();
        let result = [{"uri": ret.response}];

      }, (err) => {
        this.heyApp.utilityComp.dismissLoading();
        this.waiting = false;
      })
  }

4、业务逻辑只需要调用以上两个函数便可实现拍照上传的功能

最后

如果有兴趣,可以自己动手做一个图片裁剪的功能。

相关文章

  • Ionic2实战-拍照功能开发

    前言 因为APP里面有一个类似于朋友圈的功能,需要给用户提供拍照或者选择本地照片然后发布的能力,我们今天就来讲一下...

  • ionic2实战-添加拍照功能cordova-plugin-ca

    效果演示 源代码已上传到github 由于ionic版本更新较快,有些写法可能改变来不及更新简书,请以github...

  • Ionic2实战-图片点击缩放功能开发

    前言 作为一个功能完备的APP,难免需要显示一些图片,而现在的图片通常尺寸都特别大,需要点击放大以后才可以完全看清...

  • Ionic2实战-微信分享功能开发

    前言 微信作为腾讯一张航空母舰一样的船票实在是时间黑洞,现在如果你开发一个APP没有分享到微信功能,那估计很快就会...

  • Ionic2实战-图片上传功能开发

    前言 本模块主要实现了通过APP页面向后端上传图片文件的功能,需要前后端配合完成,工作量大概各占了一半吧。 实现思...

  • Ionic2实战-功能模块开发基本说明

    前言 随着前端所承载的功能越来越多,前端开发也变得越来越复杂。对于所有大中型项目来说,项目代码动辄上万行,同时需要...

  • 2017-HybridApp框架评估

    ionic2 ionic2cordova + angular2 + ionic2 评价 开发上手还是比较简单的主要...

  • Ionic2实战-物流模块开发

    前言 物流模块类似于煤价展示模块,车辆需求方将需求在后台发布以后司机可以在前端看到各条线路的需求详情,包括价格和目...

  • Ionic2实战-首页模块开发

    前言 首页即APP打开的默认页面,通常来说也是APP最重要的页面,用户使用频率最高的页面,极大的关乎用户对APP的...

  • Ionic2实战-煤价模块开发

    前言 煤价模块作为本APP的核心功能集中展示了各个煤矿每日煤价的涨跌变化,可以快速的根据煤种进行筛选,还能根据名字...

网友评论

    本文标题:Ionic2实战-拍照功能开发

    本文链接:https://www.haomeiwen.com/subject/nvkpcftx.html