FNPhotograph

来自于:官方立即使用

open openCameraView takePhoto setRect getZoom setZoom getMaxZoom getFlashlight setFlashlight getCamera setCamera setFocusMode setFocusRegion setFocusBox hideFocusBox addEventListener closeCameraView getRotateDegree getSupportPreviewSize getSupportPictureSize close

概述

FNPhotograph 是一个专门用来调动摄像头拍照的模块,本模块封装了两张拍照方案:

方案一:

通过 open 接口打开一个自带 UI 的拍照视图,该视图实现了相机的一些通用功能,如:切换前后摄像头、打开/关闭闪光灯、打开系统相册、设置焦距等基本功能。详情可参考下图:

alert

方案二:

开发者可通过 openCameraView 接口打开一个纯视频界面的 frame,相当于 open 了一个 frame。然后再自行打开一个 frame 配合其他功能接口,自定义出想要的拍照界面。

FNPhotograph - 图2

open

打开固定 UI 的相机页面

open({params}, callback(ret, err))

params

path:

  • 类型:字符串
  • 描述:(可选项)图片保存路径,要求本地路径(fs://)

album:

  • 类型:布尔
  • 描述:(可选项)拍照成功后是否将所拍图片存入系统相册
  • 默认:false

quality:

  • 类型:字符串
  • 描述:(可选项)所拍照片质量 (该参数已弃用,建议使用 qualityValue)
  • 默认:medium
  • 取值范围:
    • high:超清
    • medium:高清
    • low:普通

qualityValue:

  • 类型:数字
  • 描述:(可选项)所拍照片质量
  • 取值范围:1~100

attachedWindow:

  • 类型:布尔
  • 描述:是否依附在window上
  • 默认:false

usePreview:

  • 类型:布尔
  • 描述:是否在拍照完后显示预览页面(暂仅支持 android)
  • 默认:true

useAdvanceFeature:

  • 类型:布尔
  • 描述:是否打开高级属性特性(暂仅支持android)
  • 默认:false

pictureSize:

  • 类型:字符型
  • 描述:照片分辨率设置(暂仅支持android)(注意:只有useAdvanceFeature为true时该参数有效,并且该参数不能为空)
  • 举例:1920x1080 (可调用getSupportPictureSize方法查看本手机支持的所有分辨率)

previewSize:

  • 类型:字符型
  • 描述:相机预览分辨率设置(暂仅支持android)(注意:只有useAdvanceFeature为true时该参数有效,并且该参数不能为空)
  • 举例:1920x1080 (可调用getSupportPreviewSize方法查看本手机支持的所有分辨率)

isShowAlbum:

  • 类型:布尔类型
  • 描述:是否显示进入相册按钮
  • 默认:true

callback(ret)

ret:

  • 类型:JSON对象
  • 描述:返回值
  1. {
  2. eventType: 'takePhoto', //字符串类型;交互事件类型,取值范围如下:
  3. // takePhoto 拍照事件
  4. // show 相机打开事件
  5. // close 相机关闭事件
  6. // cameraError 相机调取失败
  7. imagePath: '' // 字符串类型;所拍图片的保存的绝对路径,该字段只有 eventType 为 takePhoto 时有效
  8. }

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.open({
  3. path: 'fs://savePath',
  4. album: true ,
  5. quality: 'medium'
  6. }, function(ret){
  7. alert(JSON.stringify(ret));
  8. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

openCameraView

打开纯相机页面

openCameraView({params}, callback(ret))

params

rect:

  • 类型:JSON 对象
  • 描述:(可选项)模块的位置及尺寸
  • 内部字段:
  1. {
  2. x: 0, //(可选项)数字类型;模块左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
  3. y: 0, //(可选项)数字类型;模块左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
  4. w: 80, //(可选项)数字类型;模块的宽度;若传'auto',页面从x位置开始自动充满所属的 Window 或 Frame 的宽度;默认:'auto'
  5. h: 50 //(可选项)数字类型;模块的高度;若传'auto',页面从y位置开始自动充满所属的 Window 或 Frame 的高度;默认:'auto'
  6. }

orientation:

  • 类型:字符串类型
  • 描述:(可选项)设置摄像头朝向
  • 默认:portrait
  • 取值范围:
    • landscapeRight
    • landscapeLeft
    • portrait

isStatusBarHidden:

  • 类型:布尔
  • 描述:(可选项)是否隐藏状态栏 仅支持iOS
  • 默认值:true(隐藏状态栏)

useFrontCamera:

  • 类型:布尔
  • 描述:是否使用前置摄像头;
  • 默认:false

useAdvanceFeature:

  • 类型:布尔
  • 描述:是否打开高级属性特性(暂仅支持android)
  • 默认:false

pictureSize:

  • 类型:字符型
  • 描述:照片分辨率设置(暂仅支持android)(注意:只有useAdvanceFeature为true时该参数有效,并且该参数不能为空)
  • 举例:1920x1080 (可调用getSupportPictureSize方法查看本手机支持的所有分辨率)

fixedOn:

  • 类型:字符串类型
  • 描述:(可选项)模块添加到指定 frame 的名字(只指 frame,传 window 无效)
  • 默认:模块依附于当前 window

fixed:

  • 类型:布尔
  • 描述:(可选项)模块是否随所属 window 或 frame 滚动
  • 默认值:true(不随之滚动)

callback(ret)

ret:

  • 类型:JSON对象
  • 描述:返回值
  1. {
  2. status: true //布尔类型;是否打开成功,true|false
  3. eventType:'cameraError' //字符串类型;相机调取失败
  4. }

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.openCameraView({
  3. rect: {
  4. x: 0,
  5. y: 0,
  6. w: 320,
  7. h: 300
  8. },
  9. orientation: 'portrait',
  10. fixedOn: api.frameName,
  11. fixed: true
  12. }, function(ret){
  13. alert(JSON.stringify(ret));
  14. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

takePhoto

拍照 (注意此方法与openCameraView配合使用) takePhoto({params}, callback(ret))

params

quality:

  • 类型:字符串
  • 描述:(可选项)所拍照片质量 (该参数已弃用,建议使用 qualityValue)
  • 默认:medium
  • 取值范围:
    • high:超清
    • medium:高清
    • low:普通

qualityValue:

  • 类型:数字
  • 描述:(可选项)所拍照片质量
  • 取值范围:1~100

path:

  • 类型:字符串
  • 描述:(可选项)图片保存路径,要求本地路径(fs://)。Androd 上若不传,则无法保存到相册。

album:

  • 类型:布尔
  • 描述:(可选项)拍照成功后是否将所拍图片存入系统相册
  • 默认:false

isRotation:

  • 类型:布尔
  • 描述:(可选项)是否开启图片自动旋转适配方向功能 仅支持iOS
  • 默认:true

callback(ret)

ret:

  • 类型:JSON对象
  • 描述:返回值
  1. {
  2. imagePath:'' // 字符串类型;所拍图片的保存的绝对路径
  3. }

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.takePhoto({
  3. quality: 'medium',
  4. path: 'fs://FNPhotograph/01.png',
  5. album: true
  6. }, function(ret){
  7. alert(JSON.stringify(ret));
  8. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setRect

重设拍摄区域的大小和位置,(注意此方法与openCameraView配合使用)

setRect({params})

params

rect:

  • 类型:JSON 对象
  • 描述:(可选项)重设模块的位置及尺寸
  • 内部字段:
  1. {
  2. x: 0, //(可选项)数字类型;模块左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:原值
  3. y: 0, //(可选项)数字类型;模块左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:原值
  4. w: 80, //(可选项)数字类型;模块的宽度;默认:原值
  5. h: 50 //(可选项)数字类型;模块的高度;默认:原值
  6. }

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.setRect({
  3. rect: {
  4. x: 10,
  5. y: 64,
  6. w: 300,
  7. h: 300
  8. }
  9. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getZoom

获取相机当前缩放数值(注意此方法与openCameraView配合使用)

getZoom(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;是否获取成功
  3. zoom: //数字类型;当前相机的焦距
  4. }

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.getZoom(function(ret) {
  3. if (ret.status) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setZoom

设置视图大小,若为 2 则表示远视图被放大一倍(注意此方法与openCameraView配合使用。另外,设置视图的放大倍数不能超过视图的最大放大倍数,如果超过最大放大倍数,按最大放大倍数来处理)

setZoom({params})

params

zoom:

  • 类型:数字类型
  • 描述:(可选项)设置的焦距大小(视图被放大的倍数),取值范围:大于 1.0
  • 默认:1.0

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.setZoom({
  3. zoom: 0
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getMaxZoom

获取相机支持的最大放大倍率(注意此方法与openCameraView配合使用)

getMaxZoom(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status true, // 布尔类型;表示是否获取成功
  3. zoom : 7 // 数字类型;最大放大倍率
  4. }

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.getMaxZoom(function(ret) {
  3. if (ret.status) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

getFlashlight

获取当前闪关灯状态(注意此方法与openCameraView配合使用)

getFlashlight(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;是否获取成功
  3. flashlight: 'off' //字符串类型;当前相机的闪光灯状态,取值范围如下:
  4. //on:打开
  5. //off:关闭
  6. //auto:自动
  7. }

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.getFlashlight(function(ret) {
  3. if (ret.status) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setFlashlight

设置闪关灯,在 iOS 平台上,前置摄像头打开时不支持操作闪光灯(注意此方法与openCameraView配合使用)

setFlashlight({params})

params

flashlight:

  • 类型:字符串
  • 描述:(可选项)闪光灯类型
  • 默认值:off
  • 取值范围:
    • on:打开闪光灯
    • off:关闭闪关灯
    • auto:根据当前设备所处环境的光线强度自动打开关闭闪光灯

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.setFlashlight({
  3. flashlight: 'on'
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getCamera

获取当前占用的摄像头(注意此方法与openCameraView配合使用)

getCamera(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;是否获取成功
  3. camera: 'front' //字符串类型;当前相机的占用的摄像头,取值范围如下:
  4. //front:前置摄像头
  5. //back:后置摄像头
  6. //unspecified:未启用
  7. }

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.getCamera(function(ret) {
  3. if (ret.status) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setCamera

设置前置/后置摄像头(注意此方法与openCameraView配合使用)

setCamera({params})

params

camera:

  • 类型:字符串
  • 描述:(可选项)摄像头
  • 默认值:back
  • 取值范围:
    • front:前置摄像头
    • back:后置摄像头

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.setCamera({
  3. camera: 'back'
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setFocusMode

设置当前相机对焦模式,配合 setFocusRegion 接口使用(注意此方法与openCameraView配合使用)

setFocusMode({params})

params

focusMode:

  • 类型:字符串
  • 描述:(可选项)对焦模式
  • 默认值:continue
  • 取值范围:
    • auto:自动对焦
    • continue:连续自动对焦
    • locked:锁定对焦

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.setFocusMode({
  3. focusMode: 'auto'
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setFocusRegion

设置当前相机对焦区域,需要跟 setFocusMode 接口同时使用(注意此方法与openCameraView配合使用)

若 setFocusBox 接口内 autoHide 参数为非 0 数字,则显示的聚焦提示框会在 autoHide 毫秒后自动隐藏。

若 setFocusBox 接口内 animation 参数为 true,则显示/隐藏聚焦提示框时会有动画。

setFocusRegion({params})

params

region:

  • 类型:JSON对象
  • 描述:(可选项)焦点坐标(在录像区域内的坐标,原点在该区域左上角,往右为x轴,下为y轴)
  • 默认值:原焦点坐标
  • 内部字段:
  1. {
  2. x: 20, //数字类型;聚焦区域中点 x 坐标
  3. y: 20, //数字类型;聚焦区域中点 y 坐标
  4. w: 60, //数字类型;聚焦区域的宽,在 iOS 平台上忽略此参数(系统自动设置)
  5. h: 60 //数字类型;聚焦区域的高,在 iOS 平台上忽略此参数(系统自动设置)
  6. }

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.setFocusRegion({
  3. region: {
  4. x: 20,
  5. y: 20,
  6. w: 60,
  7. h: 60
  8. }
  9. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setFocusBox

设置当前相机对焦提示框(注意此方法与openCameraView配合使用)

setFocusBox({params})

params

box:

  • 类型:字符串
  • 描述:(可选项)对焦提示框样式配置,该提示框是一个空心的正方形框。当调用setFocusRegion接口时,如果 animation 参数为 true,该提示框的显示与隐藏会有动画。
  • 动画过程:
    • 1,在焦点位置显示一个大提示框(提示框大小见内部字段 maxSize)
    • 2,将此提示框缩小(提示框大小见内部字段 minSize),此缩小动画持续时长为 300 毫秒
    • 3,持续一段时间(时长见 autoHide 字段)后隐藏该提示框
    • 4,显示渐变淡出该提示框的动画(动画持续时长 100 毫秒),隐藏提示框
  • 默认值:见内部字段
  • 内部字段:
  1. {
  2. width: 2.0, //(可选项)数字类型;提示框边框粗细;默认:2.0
  3. color: '#ADFF2F',//(可选项)字符串类型;提示框边框颜色,支持rgb、rgba、#;默认:#ADFF2F
  4. maxSize: 80.0, //(可选项)数字类型;提示框放大时的边长;默认:80.0
  5. minSize: 60.0 //(可选项)数字类型;提示框缩小时的边长;默认:60.0
  6. }

icon:

  • 类型:字符串
  • 描述:(可选项)自定义的提示框图标路径,要求本地路径(支持fs://、widget://协议),图标大小为:80*80
  • 默认:若不传该参数则显示 box 默认提示框,若传该参数使用该参数指向的图标。焦点改变时,该提示框的动画效果同 box 定义的一致

autoHide:

  • 类型:数字
  • 描述:(可选项)设置对焦提示框自动隐藏时间,当为 -1 时,不自动隐藏,需调用 hideFocusBox 接口手动隐藏
  • 默认值:0

animation:

  • 类型:布尔类型
  • 描述:(可选项)设置对焦提示框显示和隐藏时是否使用动画
  • 默认值:true

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.setFocusBox({
  3. box: {
  4. width: 1,
  5. color: '#ff0',
  6. maxSize: 100,
  7. minSize: 60
  8. }
  9. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

hideFocusBox

隐藏对焦提示框(注意此方法与openCameraView配合使用)

hideFocusBox({params})

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.hideFocusBox();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

addEventListener

事件监听(注意此方法与openCameraView配合使用)

addEventListener({params}, callback(ret))

params

name:

  • 类型:字符串
  • 描述:监听的事件类型
  • 取值范围:

    1. - click:单击摄像区域事件
    2. - doubleClick:双击摄像区域事件

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. x: 100, //数字类型;触发点的 x 坐标
  3. y: 100 //数字类型;触发点的 y 坐标
  4. }

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.addEventListener({
  3. name: 'click'
  4. }, function(ret) {
  5. if (ret) {
  6. alert(JSON.stringify(ret));
  7. }
  8. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

closeCameraView

关闭相机界面(注意此方法与openCameraView配合使用)

closeCameraView(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //是否关闭成功
  3. }

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.closeCameraView(
  3. function(ret) {
  4. if (ret) {
  5. alert(JSON.stringify(ret));
  6. }
  7. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getRotateDegree

在android系统中,有些相机图片在网页中显示的时候会被旋转,此方法可以获取图片被旋转的角度(未被旋转返回0),可以使用js将图片旋转解决此问题

getRotateDegree(callback(ret))

params

imgPath:

  • 类型:字符串
  • 描述:图片的路径 (不支持widget://)

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. degree: 90, //数字类型;表示图片被旋转的角度
  3. }

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.getRotateDegree(
  3. function(ret) {
  4. if (ret) {
  5. alert(JSON.stringify(ret));
  6. }
  7. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getSupportPreviewSize

获取支持的相机预览分辨率(暂仅支持android)

getSupportPreviewSize(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. supportList: [
  3. '1920x1080',
  4. '480x320'
  5. // ...
  6. ], //是否关闭成功
  7. }

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.getSupportPreviewSize(function(ret) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

Android系统

可提供的1.0.0及更高版本

getSupportPictureSize

获取支持的拍照后图片的分辨率(暂仅支持android)

getSupportPictureSize(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. supportList: [
  3. '1920x1080',
  4. '480x320'
  5. // ...
  6. ], //是否关闭成功
  7. }

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.getSupportPictureSize(function(ret) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

Android系统

可提供的1.0.0及更高版本

close

关闭相机界面(此接口关闭定制UI的相机页面)

close(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //是否关闭成功
  3. }

示例代码

  1. var FNPhotograph = api.require('FNPhotograph');
  2. FNPhotograph.close(
  3. function(ret) {
  4. if (ret) {
  5. alert(JSON.stringify(ret));
  6. }
  7. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本