2024-03-15 20:14:22 +08:00
|
|
|
|
import * as MediaLibrary from "expo-media-library";
|
|
|
|
|
import * as FileSystem from "expo-file-system";
|
|
|
|
|
import Toast from "react-native-toast-message";
|
2024-08-30 19:00:05 +08:00
|
|
|
|
import * as ImageManipulator from "expo-image-manipulator";
|
2024-03-15 20:14:22 +08:00
|
|
|
|
|
|
|
|
|
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`;
|
2024-03-23 15:29:03 +08:00
|
|
|
|
try {
|
2024-08-30 19:00:05 +08:00
|
|
|
|
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);
|
2024-03-23 15:29:03 +08:00
|
|
|
|
Toast.show({
|
|
|
|
|
type: "success",
|
|
|
|
|
text1: "已保存到相册",
|
|
|
|
|
topOffset: 60,
|
|
|
|
|
});
|
|
|
|
|
return true;
|
|
|
|
|
} catch (err) {
|
|
|
|
|
console.error("FS Err: ", err);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2024-03-15 20:14:22 +08:00
|
|
|
|
} else {
|
|
|
|
|
Toast.show({
|
|
|
|
|
type: "error",
|
|
|
|
|
text1: "保存失败,请检查APP媒体权限",
|
|
|
|
|
topOffset: 60,
|
|
|
|
|
});
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|