我正在尝试读取ph://
以 RNFS 开头的图像文件并将它们转换为 base64 字符串,但不幸的是我得到了ENOENT: no such file or directory
错误。
如何读取这些文件并将它们转换为 base64?
我正在尝试读取ph://
以 RNFS 开头的图像文件并将它们转换为 base64 字符串,但不幸的是我得到了ENOENT: no such file or directory
错误。
如何读取这些文件并将它们转换为 base64?
您可以使用react-native-convert-ph-asset
import RNConvertPhAsset from 'react-native-convert-ph-asset';
const convertLocalIdentifierToAssetLibrary = async (localIdentifier) => {
return await RNHeicConverter.convert({
// options
path: localIdentifier,
});
};
然后使用 react-native-fs 将其转换为 base64
const base64 = await RNFS.readFile(newpath.path, 'base64');[enter link description here][2]
如果您需要将ph://
uri 用于本地设备中的图像,则可以在 React-Native 的 Image 组件上使用 uri 选项。您将在下面的代码示例中看到这一点。但是,如果您需要转换为 base64 以获得类似file:///
uri 的前缀,那么您仍然可以使用 RNFS。
如果您在 iOS 上,您可以使用 RNFS 执行以下操作,将文件路径从 转换ph://
为file:///
:
<TouchableHighlight
onPress={async () => {
const destPath = RNFS.CachesDirectoryPath + '/MyPic.jpg';
try {
await RNFS.copyAssetsFileIOS(imageUri, destPath, 0, 0);
console.log('destPath', destPath);
} catch (error) {console.log(error);}
navigation.navigate('SelectedPicture', {
uri: 'file://' + destPath,
});
}}>
<Image source={{uri: imageUri}} style={styles.image} />
</TouchableHighlight>
请注意,路径可能不以“file://”开头,所以我手动添加了它。
有关更多详细信息,请参见此处:https ://github.com/itinance/react-native-fs#ios-only-copyassetsvideoiosvideouri-string-destpath-string-promisestring
我相信 RNFS.copyAssetsFileIOS 在幕后做了类似react-native-convert-ph-asset
的事情。