tiefen_space_app/utils/saveImage.js

41 lines
1.2 KiB
JavaScript
Raw Permalink Normal View History

import * as MediaLibrary from "expo-media-library";
import * as FileSystem from "expo-file-system";
import Toast from "react-native-toast-message";
import * as ImageManipulator from "expo-image-manipulator";
export default async function saveImage(uri) {
const permission = await MediaLibrary.requestPermissionsAsync();
if (permission.granted) {
const timestamp = new Date().getTime();
const fileUri = FileSystem.cacheDirectory + `${timestamp}.png`;
try {
const manipResult = await ImageManipulator.manipulateAsync(uri, [], {
base64: true,
});
const base64Code = manipResult.base64;
await FileSystem.writeAsStringAsync(fileUri, base64Code, {
encoding: FileSystem.EncodingType.Base64,
});
await MediaLibrary.saveToLibraryAsync(fileUri);
Toast.show({
type: "success",
text1: "已保存到相册",
topOffset: 60,
});
return true;
} catch (err) {
console.error("FS Err: ", err);
return false;
}
} else {
Toast.show({
type: "error",
text1: "保存失败请检查APP媒体权限",
topOffset: 60,
});
return false;
}
}