我的函数:
async function takePhotoNStore(){
if(cameraRef){
let picture = await cameraRef.current.takePictureAsync();
const asset = await MediaLibrary.createAssetAsync(picture.uri);
await MediaLibrary.createAlbumAsync('Expo', asset, false);
}
}
我正在尝试创建一个名为"Expo“的相册,但每次我拍一张新照片时,它都会创建多个"Expo”相册。
发布于 2020-08-12 01:03:46
您需要使用以下命令检查相册是否已经存在:
MediaLibrary.getAlbumAsync(albumName)
如果是这种情况,您可以使用以下命令添加您的资产:
MediaLibrary.addAssetsToAlbumAsync(assets, album, copyAssets)
如果没有,就像你做的那样创建它。
您将不会有任何复制!:)
发布于 2020-08-12 09:29:06
将来可以用来作参考
_saveToCameraRollAsync = async () => {
try {
let result = await captureRef(this.pageView, {
format: 'png',
quality: 0.9
});
const cachedAsset = await MediaLibrary.createAssetAsync(result);
// saved the asset uri
const album = await MediaLibrary.getAlbumAsync('GWA');
// check if the album if exist if return null you need to create an album.
if (album === null) {
// insert an album name with image
const asset = await MediaLibrary.createAssetAsync(result);
MediaLibrary.createAlbumAsync('GWA', asset)
.then(() => {
console.log('Album created!');
Alert.alert('Image has been saved')
this.setState({ cameraRollUri: asset });
})
.catch(error => {
Alert.alert(`Opps there's something wrong`)
console.log('err', error);
});
} else {
// if album exist asset added
let assetAdded = await MediaLibrary.addAssetsToAlbumAsync(
[cachedAsset],
album,
false
);
if (assetAdded === true) {
this.getAssetFromAlbum(album);
} else {
console.log("ASSET ADD ERROR");
}
}
}
catch (snapshotError) {
console.error(snapshotError);
}
};
getAssetFromAlbum = async album => {
//function
const assetResult = await MediaLibrary.getAssetsAsync({
first: 1,
album: album,
sortBy: MediaLibrary.SortBy.creationTime,
});
const asset = await assetResult.assets[0];
this.setState({ image_uri: asset.uri });
};
发布于 2020-08-25 03:04:50
saveFile = async (fileUri) => {
const { status } = await Permissions.askAsync(Permissions.CAMERA_ROLL);
if (status === "granted") {
const cachedAsset = await MediaLibrary.createAssetAsync(fileUri);
const albumName = "xyz';
const album = await MediaLibrary.getAlbumAsync(albumName)
if(album){
await MediaLibrary.addAssetsToAlbumAsync([cachedAsset], album, false);
}else{
const asset = await MediaLibrary.createAssetAsync(fileUri);
await MediaLibrary.createAlbumAsync(albumName, asset);
}
}
};
https://stackoverflow.com/questions/61132921
复制相似问题