开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
基础 api
基础
应用级事件
界面
跳转
多媒体
图片
旧版接口(停止更新)
视频
音频
录音
lottie 动画
相机
缓存
文件
位置
网络
设备
worker
数据安全
分享
收藏
自定义通用菜单
更新管理
web-view组件控制
升级支付宝最新版本
隐私信息授权
小程序广告
开放能力 api
开发 > api > 基础 api > 多媒体 > 图片 > my.chooseimage
评论 (12)
收藏
我的文档
设置

my.chooseimage(object object)

主体: 企业支付宝小程序个人支付宝小程序

从本地相册选择图片或使用相机拍照。

object object

查看示例

属性 类型 默认值 必填 兼容性 描述
count number 1 -

最多可选择的图片张数

sizetype array ["original","compressed"]
基础库: 1.0/2.3.1

图片类型

枚举值 描述 兼容性
original

原图

-
compressed

压缩图

-
sourcetype string | array ["camera","album"] -

选择图片的来源

枚举值 描述 兼容性
camera

拍照

-
album

相册选取

-
highquality boolean true
安卓: 10.2.58

是否启用高画质模式。此参数仅供安卓使用。
高画质模式使用系统相机,画质好,速度也相对较慢;非高画质模式直接从视频流获取快照,速度更快,但不适合对防抖和对焦要求较高的场景。

usefrontcamera boolean false -

是否默认使用前置摄像头

success function - -

调用成功的回调函数

fail function - -

调用失败的回调函数

complete function - -

调用结束的回调函数(调用成功、失败都会执行)

success 回调函数

参数

object res

查看示例

属性 类型 兼容性 描述
apfilepaths array -

图片的 本地临时文件 路径列表

tempfilepaths array -

图片的 本地临时文件 路径列表

tempfiles object
基础库: 1.0/2.3.1

图片的 本地临时文件 列表

属性 类型 描述
path string

路径

size number

大小,单位为 bytes

fail 回调的参数为 object,error 属性为错误码,errormessage 属性为错误消息。

错误码 错误消息 凯发app官方网站的解决方案
11 用户取消操作。

用户正常交互流程,不需要特殊处理。

14 无摄像头权限

用户没开启系统相机权限,可以调用 my.showauthguide 引导用户开启相关系统权限。

15 没有开启相册权限。/ no permission to read storage.

用户没开启系统相册权限 / 用户没有授权文件和媒体写入权限。
如果为“没有开启相册权限”,可以调用 my.showauthguide 引导用户开启相关系统权限。如果为“no permission to read storage.”,可以调用 my.showtoast 弹出提示,引导用户自行开启相关系统权限。
以上两种凯发app官方网站的解决方案仅供参考,具体逻辑可根据业务场景而定。

2001 用户不允许授权。

用户拒绝为当前小程序授权。 请在交互中考虑此情况。如有需要,请向用户强调该授权的必要性。

2002 用户拒绝为当前小程序授权,并勾选了“总是保持以上选择”后,再次调用授权接口产生的报错。

如有需要,提醒或引导用户手动授权:小程序右上角胶囊按钮->设置->打开权限开关;或者通过调用 my.opensetting 帮助用户打开设置页面。

2003 用户勾选了不允许授权选项。

如有需要,提醒或引导用户手动授权:小程序右上角胶囊按钮->设置->打开权限开关;或者通过调用 my.opensetting 帮助用户打开设置页面。

代码示例
扫码体验
my.chooseimage(object object)
检测文件真实类型
success 回调函数参数
fail 回调函数参数
my.chooseimage ({
  // 可以根据您的业务按需选择使用 ['album'] 或 ['camera'] 或 ['album', 'camera']
  sourcetype: ['album'],
  success: function (res) {
    console.log (res);
  },
  fail: function (err) {
    console.log (err);
  },
});
my.chooseimage ({
  success: function (res) {
    console.log ('chooseimage: success', res);
    my.detectfiletype ({
      filepath: res.tempfilepaths[0],
      success (res) {
        console.log ('detectfiletype: success', res);
      },
      fail (err) {
        console.log ('detectfiletype: fail', err);
      },
    });
  },
  fail: function (err) {
    console.log ('chooseimage: fail', err);
  },
});
{
  "tempfilepaths": ["https://resource/89a1fa17993b2602bec1e88f4a062ec03.image"],
  "tempfiles": [
    {
      "creationdate": 1684745836000,
      "path": "https://resource/89a1fa17993b2602bec1e88f4a062ec03.image",
      "size": 1807640
    }
  ],
  "apfilepaths": ["https://resource/89a1fa17993b2602bec1e88f4a062ec03.image"],
  "apfilepathsv2": ["https://resource/89a1fa17993b2602bec1e88f4a062ec03.image"],
  "scene": "album"
}
{
  "error": 11,
  "errormessage": "用户取消操作。"
}
  • tip
    出于数据安全考虑, iot 小程序禁止调用摄像头;请勿在 iot 小程序上调用此 api,否则会造成小程序异常。
  • tip
    图片的路径数组文件扩展名并非为文件真实类型,在真机上扩展名是 .image ,在 ide 上扩展名由文件实际类型决定。 若需判断文件实际扩展名,可使用 my.detectfiletype 进行查询,请以此接口返回结果为准,不过需注意此接口仅限真机调试,可参考上方示例代码。
  • bug
    支付宝客户端 10.5.0 版本之前,安卓、ios 两端用户拒绝系统授权相关权限 与 用户取消操作 报错一致。
  • tip
    highquality 参数设置为 false,安卓部分机型拍照时移动手机会出现图片拼接的情况。如非对拍照速度要求特别高的场景,建议设置 highquality 为 true。
  • tip
    ios 上如果设备内存紧张而用户选择的图片超大/过多,可能会出现页面白屏/重新加载(页面数据和状态丢失)的情况,需要在应用层设法规避或提醒用户。

q:通过 my.chooseimage 选中的文件如何转换为 base64?

a:

可以使用 filesystemmanager.readfile 先读取文件内容,然后调用 my.arraybuffertobase64。示例如下:

my.chooseimage({
  success: (res) => {
    const fs = my.getfilesystemmanager();
    fs.readfile({
      // readfile 不传入 encodding 参数,则以 arraybuffer 方式读取
      filepath: `${res.tempfilepaths[0]}`,
      success: ({ data }) => {
        const base64 = my.arraybuffertobase64(data);
        console.log("base64", base64);
      },
    });
  },
});

q:如果系统权限未开启,接口调用报错,如何引导开启系统权限?

a:

由于安卓和 ios 有系统差异,两端引导方式也有差异,建议如下:

  • ios:可以调用 my.showauthguide 引导用户开启相关系统权限。
  • 安卓:自行通过界面和弹框引导用户在系统设置中为支付宝开启存储写入权限。
内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录