使用CameraRoll将图片保存到相册在ios和android上的实现有一些差别。
首先CameraRoll有一个CameraRoll.saveToCameraRoll(tag, [type]);方法,可以将一张图片保存到相册中,

参数tag在ios和android上也有些不一样。

ios

对于ios来说,tag可以是任意图片的uri比如网络地址url或者base64,也可以是本地视频文件的URI.

所以对于ios来说,保存图片到相册,只需调用CameraRoll.saveToCameraRoll方法即可。

Android

在Android上,tag参数表示图片的本地uri,也就是说saveToCameraRoll方法只接受本地图片uri作为参数,如file:///data/com.example.apps/test.png。

所以对于网络图片来说,需要先将图片保存下来,再使用saveToCameraRoll方法推到相册中。

  • 怎么保存呢?如果图片是base64的形式,则可以使用rn-fetch-blob库的RNFetchBlob,具体如下:
const dest = RNFetchBlob.fs.dirs.DCIMDir + new Date().getTime() + ".png";
RNFetchBlob.fs.writeFile(dest, CommonHelper.realImageBase64String(uri), 'base64').then(res => {CameraRoll.saveToCameraRoll(`file://${dest}`).then(_ => {// save success}).catch(error => {// save fail
}).catch(error => {// do something
});static realImageBase64String(s: string): string {const pattern = /^data:image\/\S{1,};base64,/;const matches = s.match(pattern);if (matches && matches.length > 0) {const arrays = s.split(matches[0]);return arrays[1];}return '';
}
  • 如果图片是远程url,则按如下方法来保存
RNFetchBlob.config({ fileCache: true, appendExt: 'png' }).fetch('GET', uri, {}).then(res => {const localUri = res.path().startsWith('file://') ? res.path() : `file://${res.path()}`;CameraRoll.saveToCameraRoll(localUri).then(_ => {// 保存成功}).catch(error => {// 保存失败});
}).catch(error => {// 没有访问外部存储权限
});

React-Native使用CameraRoll将图片保存到相册相关推荐

  1. React Native - 使用CameraRoll将图片保存到本地相册

    PS: 以下内容经过本人亲自尝试 证明在IOS设备上简单有效 // IOS需要授权认证才允许保存图片,非常重要,记得配置: 由于苹果安全策略更新,还需要在 Info.plist 配置请求照片相的关描述 ...

  2. React Native的照相机和图片

    React Native的照相机和图片 react-native-image-picker 如果要实现多个图像选择,裁剪,压缩等功能需要 react-native-image-crop-picker ...

  3. android图片保存形式,Android应用开发之Android ScrollView截图和图片保存到相册的方式...

    本文将带你了解Android应用开发之Android ScrollView截图和图片保存到相册的方式,希望本文对大家学Android有所帮助. 1.1首先来看你一种截取屏幕,这种代码有缺陷,只能截取一 ...

  4. 长按UIWebView上的图片保存到相册

    不知道各位对于这个需求要如何解决? 可能有些人会想到js与原生交互,js监听图片点击事件,然后将图片的url传递给原生App端,然后原生App将图片保存到相册,这样子麻烦吗?超麻烦.(1).js监听图 ...

  5. 教你实现微信公众号效果:长按图片保存到相册

    不知道各位对于这个需求要如何解决? 可能有些人会想到js与原生交互,js监听图片点击事件,然后将图片的url传递给原生App端,然后原生App将图片保存到相册,这样子麻烦吗?超麻烦.(1).js监听图 ...

  6. OpenGLES(八)GPUImage滤镜链与将滤镜修改后的图片保存到相册

    1.滤镜链 在一个复合滤镜中,多种滤镜效果处理时,通常都是图片 -> 设置顶点/纹理坐标 -> 滤镜效果处理 -> 帧缓冲区 -> 新的纹理 -> 滤镜效果处理 -> ...

  7. 小程序权限设置:小程序下载图片保存到相册拒绝权限后,再次打开权限的解决方案

    小程序下载图片保存到相册功能,首次操作会提示:保存图片或视频到你的相册,有'拒绝'和'允许'两个选项,如果选择了拒绝就会保存失败:saveImageToPhotosAlbum:fail auth de ...

  8. 微信小程序点击图片保存到相册

    小程序实现点击图片保存到相册 温馨提示:小程序图片在本地保存成功后放到线上失效,应该是没有设置合法的文件下载域名 // 下载事件函数bindImage: function (e) {var url = ...

  9. 26.Android 下载图片保存到相册

    26.Android 下载图片保存到相册 Android 下载图片保存到相册 前言 实现思路 自定义Dialog 自定义Handler 自定义AsyncTask AndroidManifest配置权限 ...

最新文章

  1. 开发中解决Access-Control-Allow-Origin跨域问题的Chrome神器插件,安装及使用
  2. java任何封闭实例都不是java_《java并发编程实战》读书笔记3--对象的组合
  3. linux php-fpm优化 php-fpm.conf 重要参数详解
  4. Andriod开发中正确引入jar包的方式
  5. 深入掌握Linux操作系统,其实也没你想象那么难
  6. 通过计算机网络进行的商务活动包括,电子商务练习题及答案
  7. mysql注入式攻击_mybatis的sql中使用$会出现sql注入示例
  8. vim 的ctags,taglist和supertab详解
  9. python继承中的参数_python 继承中的super
  10. Kotlin习惯用语和编码风格[转自Kotlin中文文档]
  11. 组织人事领域信息化探索:开启编制、干部、人事一体化管理新模式
  12. 计算机变成英语,原来是中文的电脑电脑系统变成英文了
  13. 为什么大数据工程师比Java程序员工资高50%?
  14. 计算机一级考试《MS Office》
  15. 《App Store 审查指南》更新,这几条影响不小
  16. [插件使用] SwitchHosts自动更新Github Hosts文件
  17. USB3.0传输数据、解析处理和帧率计算
  18. linux wenj 立即生效_linux方面知识
  19. Allegro教学:关于dangling connection的解释
  20. [原]as3 flash web 应用 (2)批量上传之php页面接收flash传递的数据

热门文章

  1. Android 使用easeui 3.0 集成环信即时通讯 我踩过的坑
  2. 计蒜客 难题题库 201 奖学金的分配
  3. 移动端获得微信openid_构建用于移动设备的OpenID Connect流
  4. ARP Spoofing
  5. ubuntu+终端不能启动mysql数据库_在ubuntu环境下mysql数据库启动异常排除
  6. 新工作,新环境,新征程
  7. CS269I:Incentives in Computer Science 学习笔记:Lecture 7 Selfish Routing(自利寻径网络超额配置)
  8. 一款免费清爽的markdown软件vnote的完全配置手册-无忧配置Graphviz、plantuml、mathjax
  9. 食药监移动执法指挥系统
  10. 基于影像地图指挥信息系统开发教程 第十一课