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

背景:

在使用react-native-image-zoom-viewer保存图片时,报错cannot read property 'savetocameraroll'。
查找之后发现react-native-image-zoom-viewe保存图片使用的是CameraRollapi。所以我们需要在xcode中添加静态库依赖。


解决方案:

IOS端:

1.首先打开你的项目目录/node_modules/react-native/Libraries/CameraRoll/ 找到RCTCameraRoll.xcodeproj这个文件。

找到文件夹

2.然后把它拖到xcode的Libraries目录下。


拖到libraries目录下

3.然后点击项目标签在General标签中找到Linked Frameworks and Libraries 点击下边的+号把libRCTCameraRoll.a加进来

image.png

image.png

然后再返回你的项目中保存图片应该就不会错了。

RN代码(IOS)

写一下CameraRoll保存图片使用promise

savePhote =()=>{
    let promise = CameraRoll.saveToCameraRoll('图片url');
            promise.then(function (result) {
                Toast.info("保存成功")
            }).catch(function (error) {
                Toast.info("保存失败")
            });
}

ios端的配置写完了。在添加一下安卓端的;

Android 的保存使用CameraRoll配合 react-native-fs 进行实现保存图片

具体实现代码:

const RNFS = require('react-native-fs'); //文件处理
const storeLocation = `${RNFS.DocumentDirectoryPath}`;
     let pathName = new Date().getTime() + "文件名.png"
     let downloadDest = `${storeLocation}/${pathName}`;
      const ret = RNFS.downloadFile({fromUrl:saveImageUrl,toFile:downloadDest});
      ret.promise.then(res => {
        if(res && res.statusCode === 200){
            var promise = CameraRoll.saveToCameraRoll("file://" + downloadDest);
            promise.then(function(result) {
               console.log("图片已保存至相册")
            }).catch(function(error) {
               console.log("保存失败")
            })
        }
      })

别忘加权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

文章参考

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 持续更新中...... 一套企业级的 UI 设计语言和 React 实现。 https://mobile.ant....
    日不落000阅读 5,842评论 0 35
  • 给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。注意...
    vbuer阅读 376评论 0 0
  • 姓名: 芳紫 公司: 新时代健康产业集团 组别: 365期 利他一组(组长) 【8月11日精进打卡第132天】 【...
    芳紫芳香紫气东来阅读 142评论 0 0
  • 我爱秋天,爱它那盒五彩缤纷的颜料。它把颜色给了果园,果园一派丰收的景象:红彤彤的苹果:黄艳艳的香梨:火红火红的石榴...
    作者白泡泡阅读 693评论 0 1