open openCameraView takePhoto setRect getZoom setZoom getMaxZoom getFlashlight setFlashlight getCamera setCamera setFocusMode setFocusRegion setFocusBox hideFocusBox addEventListener closeCameraView getRotateDegree getSupportPreviewSize getSupportPictureSize close
FNPhotograph 是一个专门用来调动摄像头拍照的原生插件,本原生插件封装了两张拍照方案:
方案一:
通过 open 接口打开一个自带 UI 的拍照视图,该视图实现了相机的一些通用功能,如:切换前后摄像头、打开/关闭闪光灯、打开系统相册、设置焦距等基本功能。详情可参考下图:
方案二:
开发者可通过 openCameraView 接口打开一个纯视频界面的 frame,相当于 open 了一个 frame。然后再自行打开一个 frame 配合其他功能接口,自定义出想要的拍照界面。
打开固定 UI 的相机页面
open({params}, callback(ret, err))
path:
album:
quality:
qualityValue:
attachedWindow:
usePreview:
useAdvanceFeature:
pictureSize:
previewSize:
isShowAlbum:
ret:
{
eventType: 'takePhoto', //字符串类型;交互事件类型,取值范围如下:
// takePhoto 拍照事件
// show 相机打开事件
// close 相机关闭事件
// cameraError 相机调取失败
imagePath: '' // 字符串类型;所拍图片的保存的绝对路径,该字段只有 eventType 为 takePhoto 时有效
}
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.open({
path: 'fs://savePath',
album: true ,
quality: 'medium'
}, function(ret){
api.alert({
msg: JSON.stringify(ret)
})
});
iOS系统,Android系统
可提供的1.0.0及更高版本
打开纯相机页面
openCameraView({params}, callback(ret))
rect:
{
x: 0, //(可选项)数字类型;原生插件左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
y: 0, //(可选项)数字类型;原生插件左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
w: 80, //(可选项)数字类型;原生插件的宽度;若传'auto',页面从x位置开始自动充满所属的 Window 或 Frame 的宽度;默认:'auto'
h: 50 //(可选项)数字类型;原生插件的高度;若传'auto',页面从y位置开始自动充满所属的 Window 或 Frame 的高度;默认:'auto'
}
orientation:
isStatusBarHidden:
useFrontCamera:
useAdvanceFeature:
pictureSize:
fixedOn:
fixed:
ret:
{
status: true //布尔类型;是否打开成功,true|false
eventType:'cameraError' //字符串类型;相机调取失败
}
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.openCameraView({
rect: {
x: 0,
y: 0,
w: 320,
h: 300
},
orientation: 'portrait',
fixedOn: api.frameName,
fixed: true
}, function(ret){
api.alert({
msg: JSON.stringify(ret)
})
});
iOS系统,Android系统
可提供的1.0.0及更高版本
拍照 (注意此方法与openCameraView配合使用) takePhoto({params}, callback(ret))
quality:
qualityValue:
path:
album:
isRotation:
ret:
{
imagePath:'' // 字符串类型;所拍图片的保存的绝对路径
}
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.takePhoto({
quality: 'medium',
path: 'fs://FNPhotograph/01.png',
album: true
}, function(ret){
api.alert({
msg: JSON.stringify(ret)
})
});
iOS系统,Android系统
可提供的1.0.0及更高版本
重设拍摄区域的大小和位置,(注意此方法与openCameraView配合使用)
setRect({params})
rect:
{
x: 0, //(可选项)数字类型;原生插件左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:原值
y: 0, //(可选项)数字类型;原生插件左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:原值
w: 80, //(可选项)数字类型;原生插件的宽度;默认:原值
h: 50 //(可选项)数字类型;原生插件的高度;默认:原值
}
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.setRect({
rect: {
x: 10,
y: 64,
w: 300,
h: 300
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取相机当前缩放数值(注意此方法与openCameraView配合使用)
getZoom(callback(ret))
ret:
{
status: true, //布尔型;是否获取成功
zoom: //数字类型;当前相机的焦距
}
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.getZoom(function(ret) {
if (ret.status) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置视图大小,若为 2 则表示远视图被放大一倍(注意此方法与openCameraView配合使用。另外,设置视图的放大倍数不能超过视图的最大放大倍数,如果超过最大放大倍数,按最大放大倍数来处理)
setZoom({params})
zoom:
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.setZoom({
zoom: 0
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取相机支持的最大放大倍率(注意此方法与openCameraView配合使用)
getMaxZoom(callback(ret))
ret:
{
status : true, // 布尔类型;表示是否获取成功
zoom : 7 // 数字类型;最大放大倍率
}
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.getMaxZoom(function(ret) {
if (ret.status) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
获取当前闪关灯状态(注意此方法与openCameraView配合使用)
getFlashlight(callback(ret))
ret:
{
status: true, //布尔型;是否获取成功
flashlight: 'off' //字符串类型;当前相机的闪光灯状态,取值范围如下:
//on:打开
//off:关闭
//auto:自动
}
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.getFlashlight(function(ret) {
if (ret.status) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置闪关灯,在 iOS 平台上,前置摄像头打开时不支持操作闪光灯(注意此方法与openCameraView配合使用)
setFlashlight({params})
flashlight:
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.setFlashlight({
flashlight: 'on'
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取当前占用的摄像头(注意此方法与openCameraView配合使用)
getCamera(callback(ret))
ret:
{
status: true, //布尔型;是否获取成功
camera: 'front' //字符串类型;当前相机的占用的摄像头,取值范围如下:
//front:前置摄像头
//back:后置摄像头
//unspecified:未启用
}
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.getCamera(function(ret) {
if (ret.status) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置前置/后置摄像头(注意此方法与openCameraView配合使用)
setCamera({params})
camera:
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.setCamera({
camera: 'back'
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置当前相机对焦模式,配合 setFocusRegion 接口使用(注意此方法与openCameraView配合使用)
setFocusMode({params})
focusMode:
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.setFocusMode({
focusMode: 'auto'
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置当前相机对焦区域,需要跟 setFocusMode 接口同时使用(注意此方法与openCameraView配合使用)
若 setFocusBox 接口内 autoHide 参数为非 0 数字,则显示的聚焦提示框会在 autoHide 毫秒后自动隐藏。
若 setFocusBox 接口内 animation 参数为 true,则显示/隐藏聚焦提示框时会有动画。
setFocusRegion({params})
region:
{
x: 20, //数字类型;聚焦区域中点 x 坐标
y: 20, //数字类型;聚焦区域中点 y 坐标
w: 60, //数字类型;聚焦区域的宽,在 iOS 平台上忽略此参数(系统自动设置)
h: 60 //数字类型;聚焦区域的高,在 iOS 平台上忽略此参数(系统自动设置)
}
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.setFocusRegion({
region: {
x: 20,
y: 20,
w: 60,
h: 60
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置当前相机对焦提示框(注意此方法与openCameraView配合使用)
setFocusBox({params})
box:
{
width: 2.0, //(可选项)数字类型;提示框边框粗细;默认:2.0
color: '#ADFF2F',//(可选项)字符串类型;提示框边框颜色,支持rgb、rgba、#;默认:#ADFF2F
maxSize: 80.0, //(可选项)数字类型;提示框放大时的边长;默认:80.0
minSize: 60.0 //(可选项)数字类型;提示框缩小时的边长;默认:60.0
}
icon:
autoHide:
animation:
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.setFocusBox({
box: {
width: 1,
color: '#ff0',
maxSize: 100,
minSize: 60
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
隐藏对焦提示框(注意此方法与openCameraView配合使用)
hideFocusBox({params})
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.hideFocusBox();
iOS系统,Android系统
可提供的1.0.0及更高版本
事件监听(注意此方法与openCameraView配合使用)
addEventListener({params}, callback(ret))
name:
ret:
{
x: 100, //数字类型;触发点的 x 坐标
y: 100 //数字类型;触发点的 y 坐标
}
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.addEventListener({
name: 'click'
}, function(ret) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
关闭相机界面(注意此方法与openCameraView配合使用)
closeCameraView(callback(ret))
ret:
{
status: true, //是否关闭成功
}
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.closeCameraView(
function(ret) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
在android系统中,有些相机图片在网页中显示的时候会被旋转,此方法可以获取图片被旋转的角度(未被旋转返回0),可以使用js将图片旋转解决此问题
getRotateDegree(callback(ret))
imgPath:
ret:
{
degree: 90, //数字类型;表示图片被旋转的角度
}
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.getRotateDegree(
function(ret) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取支持的相机预览分辨率(暂仅支持android)
getSupportPreviewSize(callback(ret))
ret:
{
supportList: [
'1920x1080',
'480x320'
// ...
], //是否关闭成功
}
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.getSupportPreviewSize(function(ret) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
Android系统
可提供的1.0.0及更高版本
获取支持的拍照后图片的分辨率(暂仅支持android)
getSupportPictureSize(callback(ret))
ret:
{
supportList: [
'1920x1080',
'480x320'
// ...
], //是否关闭成功
}
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.getSupportPictureSize(function(ret) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
Android系统
可提供的1.0.0及更高版本
关闭相机界面(此接口关闭定制UI的相机页面)
close(callback(ret))
ret:
{
status: true, //是否关闭成功
}
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.close(
function(ret) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本