upImageModule 相册相机模块

模块概述

为H5页面提供对本地图片资源的浏览、读取,使用相机以及保存图片到相册等功能


方法列表

  • imagePicker(打开图片浏览)
  • openCamera(打开相机)
  • saveImages(保存图片到相册)
  • fileToBase64 (file格式文件转换base64格式)

公共数据

所有数据均以JSON结构返回,由代码,信息和数据三部分组成

{
    "retCode": "000000", //接口状态标识码,错误标识码以18开头
    "retInfo": "执行成功",//接口信息说明
    "retData": null //业务数据
}

具体定义:返回数据通用


模块变更记录

  • V3.0.0

    • 方法变更:
      • openCamera(打开相机)成功回调返回值retData的内部字段删除duration(视频时长)增加eventType(用户点击事件类型)
  • V3.1.0

    • 删除方法:
      • closePicker (关闭图片浏览)
    • 新增方法:
      • fileToBase64 (file格式文件转换base64格式)
  • V3.2.0

    • 相机相册模块未定义的retCode编码按照通用数据规定变为990001,操作失败retCode变为000001,非法参数错误retCode变为000002
    • 方法变更:
  • 3.7.0-beta19

    • 方法变更:
      • openCamera({params}) params参数中新增isDefaultOriginal参数,用来表示是否默认选中原图,true选中原图,false不选中原图,不传默认为 不选中原图
  • 3.7.0-beta37

    • 方法变更:
      • imagePicker({params}) params参数中新增clipPicParam(裁剪框比例 0代表1:1 1代表3:2 2代表2:3 3代表4:3 4代表3:4 5代表16:9 6代表9:16 多种比例时可以以英文逗号分隔,比如:0,1代表1:1和3:2)以及singleFileSizeByteLimit(单个图片/视频的大小限制(单位byte))
  • 4.0.0-beta33

    • 方法变更:
      • 重构相机相册插件
      • 删除transPath(图片地址转换)
  • 4.0.0-upgrade04

    • 方法变更:
      • imagePicker({params})返回值新增width、height属性

方法说明

  • imagePicker

    imagePicker({params})

使用说明

通过imagePicker方法,可以拉起一个全屏显示用户相册界面,选择完成后返回页面进行加载,或者直接点击取消。成功回调可能包括两种情况:

  1. 直接点击取消按钮

  2. 选中一定数量图片点击下一步

特别注意:

返回的图片路径带有 file://前缀,如:'file:///storage/emulated/0/DCIM/Screenshots………………'

1.直接点击取消按钮

2.选中一定数量图片点击下一步

适用性
容器 Nebula
支持情况
APP版本 6.12.0 及以上
params 输入参数
属性名 数据类型 是否必填 默认值 说明
max Number 9 最多选择几张图片
typeMode Number 0 0-图片;1-视频;2-图片和视频
singleChoice Boolean false 是否选择单张
showCamera Boolean false 是否显示拍照按钮(flutter相册目前不支持)
tips String "" 最上面的提示文本(flutter相册目前不支持)
cropImage Boolean false 是否编辑图片
showOriginalBtn Boolean true 是否显示原图按钮
videoLimitSecond Number 30 单个视频总时长限制(单位 秒)
allFileSizeByteLimit Number 50 * 9 * 1024 * 1024 文件总大小限制(单位 byte)
isDefaultOriginal Boolean false 是否默认选中原图
clipPicParam String "" 裁剪框比例(仅限单选模式) 0代表1:1 1代表3:2 2代表2:3 3代表4:3 4代表3:4 5代表16:9 6代表9:16 多种比例时可以以英文逗号分隔,比如:0,1代表1:1和3:2
singleFileSizeByteLimit String 1000 * 1024 * 1024 单个图片/视频的大小限制(单位字节byte)
错误返回 retCode说明
retCode编码 retInfo说明
180002 用户取消图片选择
180003 图片浏览失败
正确返回 retData说明
属性名 数据类型 说明
eventType String 用户点击事件类型,取值范围:见下方eventType取值范围说明
list Array 返回选定的图片信息数组,见下方list单独说明

eventType取值范围说明

取值 说明
nextStep 用户点击【下一步】/【确定】 按钮
cancel 用户点击取消按钮

list属性

属性名 数据类型 说明
path String 图片路径,注意:在APICloud容器的iOS 平台上,因为系统原因,需要用 transPath 方法转换之后才可读取原图
thumbPath String 缩略图路径
width String 缩略图宽度
height String 缩略图高度
exif Array 额外信息,见下方exif单独说明

exif属性

属性名 数据类型 说明
size String 图片大小(单位kb)
orientation String 旋转角度(可能为空)
示例
upImageModule.imagePicker({
        max: 9,
        typeMode: 2,
        singleChoice: false,
        showCamera: false,
        tips: '请选择照片',
        cropImage: false,
        showOriginalBtn: true,
        videoLimitSecond: 270,
        allFileSizeByteLimit: 450
        isDefaultOriginal:true
      }).then((res) => {
        alert(JSON.stringify(res));
        console.log('success:getCache', res); 
      }).catch((err) => {
        alert(JSON.stringify(err));
      });
    });

成功返回的retData (以apicloud容器为例)

{
    eventType: 'nextStep', 
    list: [{                         
        path: 'file:///storage/emulated/0/DCIM/Screenshots/Screenshot_2019-07-16-16-25-47-978_com.haier.uhome.uplus.png',
        thumbPath: 'file:///storage/emulated/0/Android/data/com.haier.uhome.uplus/cache/Screenshot_2019-07-16-16-25-47-978_com.haier.uhome.uplus.png',
        width: '100',
        height: '100'
        exif {
          size: '1024',
          orientation: ''(可能为空)
        }                      
    }]
}
  • openCamera

    openCamera({params})

使用说明

如图所示,可以直接调用相机功能,打开拍照,若直接点击X号,代表用户取消拍照,若用户拍照,接着进入下面步骤

图一

如下图所示,用户拍照后,出现X和V,若选择X,代表用户不保存当前图片,重新回到上图拍照界面; 若用户选择V,代表用户拍照完成,系统生成了图片路径,此时,可以从成功回调中获取到图片的相关信息

图二

注意:返回base64格式的图片带逗号及逗号前面部分,例:‘data:image/jpeg;base64,/9j/4AAQSkZJ………………’,返回file协议的图片带有file://, 例如:‘file:///storage/emulated/0/UZMap………………’

适用性
容器 Nebula
支持情况
APP版本 6.12.0 及以上
params 输入参数
属性名 数据类型 是否必填 默认值 说明
saveToPhotoAlbum Boolean false 拍照后是否保存到相册
destinationType Number 1 返回数据类型,1表示返回图片地址;2表示图片经过base64编码后的字符串
quality Number 50 图片质量,取值范围是0-100。0、100表示使用图片原始分辨率,没有压缩
错误返回 retCode说明
retCode编码 retInfo说明
180001 获取相机权限失败
180002 用户取消拍照
180003 拍照失败
正确返回 retData说明
属性名 数据类型 说明
eventType String 用户点击事件类型,取值范围:见下方eventType取值范围说明
data String 图片路径
base64Data String base64数据,destinationType为2时返回

eventType取值范围说明

取值 说明
nextStep 用户点击【下一步】/【确定】 按钮
cancel 用户点击取消按钮
示例
upImageModule.openCamera({destinationType: 2}).then((result) => {
  console.log('result',result);
},(err)=>{
   console.log('err',err); 
})

成功返回的retData(参数destinationType===1 && 拍照保存时)

{
    eventType:'nextStep',
       base64Data:"",
    data:"file:///storage/emulated/0/UZMap/A6095626649427/picture/p-709a9ed1.jpg"
}

成功返回的retData(参数destinationType===2 && 拍照保存时)

{
    eventType:'nextStep',
       data:"file:///storage/emulated/0/UZMap/A6095626649427/picture/p-709a9ed1.jpg",
    base64Data:"data:image/jpeg;base64,/9j/4AAQSkZJ………………"
}

成功返回的retData(直接取消时)

{
    eventType:'cancel',
       data:"",
    base64Data:""
}
  • saveImages

    saveImages({params})

使用说明

将一张base64编码,或者符合file协议的图片保存到本地相册

注:file协议,本地文件传输协议,主要用于访问本地计算机中的文件。file协议的基本格式是 file:///文件路径 这里保存file协议的图片到本地相册的意义是:有的图片虽然在本地,但是从相册看不到,通过这个方法可以保存这种特殊图片到相册里,然后可以使用imagePicker方法再从相册选择图片进行其他操作

适用性
容器 Nebula
支持情况
APP版本 6.12.0 及以上
params 输入参数
属性名 数据类型 是否必填 默认值 说明
images Array / 需要保存的图片数组,目前数组中只能放一个字符串元素,且图片只支持:base64(注意,iOS需要去掉'data:image/png;base64,'的前缀),file协议
错误返回 retCode说明
retCode编码 retInfo说明
180001 获取相册权限失败/保存异常/参数无效(入参)
正确返回 retData说明

示例
upImageModule.saveImages({images: ['file:///a.png']}).then((result) => {
  console.log('result',result);
},(err)=>{
   console.log('err',err); 
})
  • fileToBase64

    fileToBase64({params})

使用说明

此方法将file协议的文件转换为base64格式,可与imagePicker方法一起使用,将返回的图片路径转换为base64格式使用。

注:file协议,本地文件传输协议,主要用于访问本地计算机中的文件。file协议的基本格式是 file:///文件路径,此方法中不需要file://前缀

适用性
容器 Nebula
支持情况
APP版本 6.12.0 及以上
params 输入参数
属性名 数据类型 是否必填 默认值 说明
filePaths Array / 需要转换的的file协议路径
错误返回 retCode说明
retCode编码 retInfo说明
180002 没有存储/读写的权限
180003 参数无效(入参)
正确返回 retData说明
{
    "retCode": "000000",
    "retInfo": "执行成功",
  "retData": [resultModel]
}

单条路径转换结果 resultModel

{
  "code" : "000000",
  "Info" : "执行成功",
  "filePath" : "文件路径",
  "base64data" : "base64字符串",
}

resultModel字段说明

属性名 数据类型 说明
code String 单条路径转换返回码,code范围见下表
info String 结果信息,info范围见下表
filePath String 原文件file协议路径(不带file://前缀)
base64Data String base64数据

code字段说明

code编码 info说明
000000 转换成功
230005 文件路径为空
230006 文件不存在
示例
upImageModule.fileToBase64({filePaths: ['/storage/emulated/0/haier/images/pick.jpeg','/storage/emulated/0/haier/images/pick.jpeg']}).then((result) => {
  console.log('result',result);
},(err)=>{
   console.log('err',err); 
})

成功返回的retdata

retData:[{
  base64Data:"/9j/4AAQSkZJRgABAQAAAQABAAD/2……………………"
  code:"000000"
  filePath:"/storage/emulated/0/haier/images/pick.jpeg"
  info:"转换成功"
},
{
  base64Data:"AQABAAD/2wBDAAEBAQEBAQEBAQEBAQEB……………………"
  code:"000000"
  filePath:"/storage/emulated/0/haier/images/haha.jpg"
  info:"转换成功"
}]

results matching ""

    No results matching ""