2

我正在尝试读取ph://以 RNFS 开头的图像文件并将它们转换为 base64 字符串,但不幸的是我得到了ENOENT: no such file or directory错误。

如何读取这些文件并将它们转换为 base64?

4

2 回答 2

0

您可以使用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]
于 2020-05-05T08:04:07.763 回答
0

如果您需要将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的事情。

于 2021-08-01T06:06:07.673 回答