世博会FileSystem.moveAsync位置不是可以移动的吗?
Expo FileSystem.moveAsync location is not moveable?
我正在使用 expo API 开发 React Native 应用程序,该应用程序基本上是先拍照,然后应用程序使用 ImageEditor.cropImage 裁剪它,最后将图片从缓存复制到另一个位置。代码:
takePicture = async function() {
if (this.camera) {
this.camera.takePictureAsync().then(async (data) => {
cropdata = {
offset:{x:0, y:0},
size:{width:100, height:100},
};
await ImageEditor.cropImage(
data.uri,
cropdata,
async (uri) => {
FileSystem.moveAsync({
from: uri,
to: `${FileSystem.documentDirectory}photos/Photo_${this.state.photoId}.jpg`,
}).then(() => {
this.setState({
photoId: this.state.photoId + 1,
});
Vibration.vibrate();
});
},
(error) => {
console.log(error);
}
);
});
}
};
但是显示如下错误:
[Unhandled promise rejection: Error: Location
'file:///data/user/0/host.exp.exponent/cache/ReactNative_cropped_image_574763720.jpg'
isn't movable.]
有什么想法吗?
Expo 的文件系统模块可以copy/move/etc。之前保存在应用程序范围内的文件(例如通过 ImagePicker 或使用 Asset.loadAsync)。 ImagerEditor 是 React Native 的核心功能,它将您的图像保存到 Expo 范围之外的文件中,因此 FileSystem 无法对该文件执行操作。可以在这里找到更多相关信息:
https://forums.expo.io/t/where-does-camera-takepictureasync-save-photos/6475/7
所以不要使用 ImageEditor.cropImage()
应该使用 expo ImageManipulator.
我正在使用 expo API 开发 React Native 应用程序,该应用程序基本上是先拍照,然后应用程序使用 ImageEditor.cropImage 裁剪它,最后将图片从缓存复制到另一个位置。代码:
takePicture = async function() {
if (this.camera) {
this.camera.takePictureAsync().then(async (data) => {
cropdata = {
offset:{x:0, y:0},
size:{width:100, height:100},
};
await ImageEditor.cropImage(
data.uri,
cropdata,
async (uri) => {
FileSystem.moveAsync({
from: uri,
to: `${FileSystem.documentDirectory}photos/Photo_${this.state.photoId}.jpg`,
}).then(() => {
this.setState({
photoId: this.state.photoId + 1,
});
Vibration.vibrate();
});
},
(error) => {
console.log(error);
}
);
});
}
};
但是显示如下错误:
[Unhandled promise rejection: Error: Location 'file:///data/user/0/host.exp.exponent/cache/ReactNative_cropped_image_574763720.jpg' isn't movable.]
有什么想法吗?
Expo 的文件系统模块可以copy/move/etc。之前保存在应用程序范围内的文件(例如通过 ImagePicker 或使用 Asset.loadAsync)。 ImagerEditor 是 React Native 的核心功能,它将您的图像保存到 Expo 范围之外的文件中,因此 FileSystem 无法对该文件执行操作。可以在这里找到更多相关信息:
https://forums.expo.io/t/where-does-camera-takepictureasync-save-photos/6475/7
所以不要使用 ImageEditor.cropImage()
应该使用 expo ImageManipulator.