2

所以我使用 Expo 的 Camera API 来拍照,像这样:

takePicture = async function() {
  if(this.camera) {
    this.camera.takePictureAsync().then(data => {
        CameraRoll.saveToCameraRoll(data.uri);
    }).then(() => {
      this.setState({
        photoId: this.state.photoId + 1,
      });
    });
  }
};

现在,我想专门检索我用这个应用程序拍摄的照片,以便以后使用。我认为一个简单的方法是,如果应用程序将其图片保存到相机胶卷中的一个单独文件夹中,就像 Instagram 在其中制作自己的文件夹一样。

我将如何让应用程序在相机胶卷中创建自己的文件夹,然后将图片保存到其中?

4

2 回答 2

2

在 Android 上,您可以使用 react-native-fetch-blob 及其文件系统访问 API(PictureDir 常量)。

例如,我这样做:

try {
    const data = await this.camera.takePictureAsync()
    await RNFetchBlob.fs.mkdir(`${RNFetchBlob.fs.dirs.PictureDir}/myfolder`)
    await RNFetchBlob.fs.mv(
        data.api, 
        `${RNFetchBlob.fs.dirs.PictureDir}/myfolder/${moment().unix()}.jpg`
    )
} catch () {
    ...
}

https://github.com/wkh237/react-native-fetch-blob/wiki/File-System-Access-API

于 2018-04-28T21:57:34.203 回答
0

你也可以在这里看到答案。因为这里问了同样的问题 https://stackoverflow.com/a/67533729/10361123

我知道我回答这个问题已经太晚了。

你可以简单地使用下面的 npm 包来获得你想要的输出

npm i @react-native-community/cameraroll

之后,您必须在 try catch 块中使用以下代码,以便您可以轻松地将图像存储在所需的路径上。

   try{
        CameraRoll.save(data.uri,{type:"photo",album:"../your folder name"}).
                    then((res)=>{console.log("save img...",res);}).
                    catch((err)=>{console.log("err for save img...",err);})
    }
    catch{
      //your code...
    }
于 2021-05-14T11:45:44.557 回答