0

我正在使用react-native-photos-framework创建用户定义的相册并将资产创建到设备原生图库中。

在我的应用程序中,我为用户提供了用户定义的专辑创建功能。为此,我正在显示一个带有输入字段的简单模式,用户可以在其中输入专辑名称以及“确定”和“取消”按钮。

我想要的是 ?
我希望当用户在输入字段中键入专辑名称后单击“确定”按钮时,应在图库中创建一个键入的专辑,并且默认情况下应将一个图像(位于我的本地目录中)添加到该专辑中。

这是我使用的代码:

createAlbum() {
    RNPhotosFramework.createAlbum(this.state.createAlbumName).then((album) => {
      RCTCameraRollRNPhotosFrameworkManager.createAssets({
        images : [{ uri : '../assets/logo.png' }],
        album : album,
        includeMetadata : true 
      });
    }).catch((error)=>{
      alert("Error in creating album : \n"+JSON.stringify(error));
    });
}

如您所见,我首先创建的是在画廊中成功创建的专辑,但资产并未复制到该专辑中。它给了我这个错误:

找不到图像文件://Users/vision/Library/Developer/CoreSimulator/Devices/E5AA1780-A55C-4C67-95A5-222E4AS3PA23/data/Containers/Bundle/Application/5E37FAF5-15DD-483B-3BD6-C311C587SD8/CameraApp .app/../assets/imgs/logo.png

我也习惯于require()获取图像 uri,如下所示:

images : [{ uri : require('../assets/logo.png' )}],

但随后应用程序将崩溃。

这是我的项目结构:

我的项目目录结构。

请帮助我如何使用 react-native-photos-framework 创建本地静态图像资产。我是新来的反应本地人!

4

1 回答 1

0

如果有人也遇到这个问题,我已经使用这个答案解决了问题。

要解决问题,首先安装react-native-fs

然后将其导入您的项目中。

const RNFS = require('react-native-fs');

然后我用来RNFS.MainBundlePath获取我的应用程序根路径并assets在我的实际路径之前添加。

这是代码:

createAlbum() {
    RNPhotosFramework.createAlbum(this.state.createAlbumName).then((album) => {
      RCTCameraRollRNPhotosFrameworkManager.createAssets({
        images : [{uri:RNFS.MainBundlePath+'assets/src/assets/imgs/logo.png'}],
        album : album,
        includeMetadata : true
      }).then((result)=>{
        alert(JSON.stringify(result));
      }).catch((error)=>{
        alert("Error in creating assets.\n"+JSON.stringify(error));
      });
    });
}

希望它会帮助某人。

于 2019-05-01T11:22:22.173 回答