FNPhotograph 模块的使用

简介

APICloud 拍照模块

https://docs.apicloud.com/Client-API/Func-Ext/FNPhotograph

正如文档所说,有2种拍照的方案。

(1) 通过 open 接口打开一个自带 UI 的拍照视图…
(2) 开发者可通过 openCameraView 接口打开一个纯视频界面的 frame

下面分开进行介绍

方式1

自带拍照界面,使用方便,流畅。

      var FNPhotograph = api.require('FNPhotograph');
      
      FNPhotograph.open({
          path: 'fs://savePath',
          album: false ,
          quality: 'medium'    //          quality: 'low'
      }, function(ret){
        if (ret.eventType == "show") {
        } else if (ret.eventType == "takePhoto") {
          alert(ret.imagePath);
          FNPhotograph.close();
        } else if (ret.eventType == "close") {
          alert("close");          
        } else {
          alert(JSON.stringify(ret));
        }
    });

备注:有时候机型性能不太好,打开摄像头可能得等一段时间。

方式2

适合自定义界面的需求,比如:不想要选择系统相册图片的功能。

    // 拍照
    var FNPhotograph = api.require('FNPhotograph');

    FNPhotograph.openCameraView({
      rect: {
        x: 0,
        y: 0,
        w: 'auto',
        h: api.winHeight - 100
      },
      orientation: 'landscapeRight',
      fixedOn: api.frameName
    }, function(ret) {
      if (!ret.status) {
        alert('相机打开失败,请确认已经授权使用相机!');
      }
      // alert('openCameraView ret:'+JSON.stringify(ret));
    })

可以调整页面的高度,在页面底部放上一个拍照按钮,通过点击该按钮,调用拍照功能,拍照成功后,自动关闭照相页面。

      var FNPhotograph = api.require('FNPhotograph');

      FNPhotograph.takePhoto({
        quality: 'medium',
        path: examPhotoPath,
        album: false
      }, (ret) => {
        var imagePath = (ret.imagePath);
        FNPhotograph.closeCameraView((ret) => {
          if (ret) {
            alert("拍照成功!");
          }
        });
      });

如果app采用横盘的方式进行拍摄,拍出的照片,会自动旋转了90度。

【解决方法】简单地,在显示拍摄照片的地方,添加 css 样式旋转,纠正旋转的照片

style="transform:rotate(-90deg); " 

拍照像素问题

设为低像素

      FNPhotograph.takePhoto({
        quality: 'low',
        qualityValue: 12,
        path: examPhotoPath,
       ...

总结

官方模块文档中的例子代码,有些地方参数写得不准,需要核对文档参数

拍照模块调试起来比较麻烦,要多耐下性子进行调试

posted @ 2018-11-07 16:48  lvye1221  阅读(28)  评论(0编辑  收藏  举报