Reputation: 191
So I'm using Expo's Camera API to take a picture, like so:
takePicture = async function() {
if(this.camera) {
this.camera.takePictureAsync().then(data => {
CameraRoll.saveToCameraRoll(data.uri);
}).then(() => {
this.setState({
photoId: this.state.photoId + 1,
});
});
}
};
Now, I'd like to specifically retrieve the pictures I take with this app to work with later. I figure an easy way to do this would be if the app saved its pictures to a separate folder in the camera roll, much like how Instagram makes its own folder in there.
How would I go about having the app create its own folder in the camera roll, and then saving pictures to it?
Upvotes: 2
Views: 6443
Reputation: 418
You can also see the answer here. Because here is same question asked https://stackoverflow.com/a/67533729/10361123
I know that I am too late for this answer.
You can simply use below npm package for get your desired output
npm i @react-native-community/cameraroll
and after that you have to use below code in try catch block so you can easily store your image on your desired path.
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...
}
Upvotes: 0
Reputation: 3475
On Android, you can use react-native-fetch-blob and its File System Access API (PictureDir constant).
For example, I do:
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
Upvotes: 2