所以我使用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在那里制作自己的文件夹一样。
如何让应用程序在相机胶卷中创建自己的文件夹,然后将图片保存到它?
答案 0 :(得分: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
答案 1 :(得分: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...
}