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,
...
总结
官方模块文档中的例子代码,有些地方参数写得不准,需要核对文档参数
拍照模块调试起来比较麻烦,要多耐下性子进行调试