React-native,如何获取文件资产图片的绝对路径?

Osc*_*nco 5 ios react-native

我正在 react-native 上的 ios 上做一些图像处理。

问题是我使用的库之一只支持绝对路径,但我只有文件资产 uri。

例子

我有:

assets-library://asset/asset.HEIC?id=CE542E92-B1FF-42DC-BD89-D61BB70EB4BF&ext=HEIC
Run Code Online (Sandbox Code Playgroud)

我需要:

file:///Users/USERNAME/Library/Developer/CoreSimulator/Devices/########-####-####-####-############/data/Containers/Data/Application/########-####-####-####-############/Documents/########-####-####-####-############.jpg
Run Code Online (Sandbox Code Playgroud)

有什么方法可以轻松获取图像绝对路径?

Osc*_*nco 2

因此,您只获得 url 的原因是因为它的图像可能未存储在设备上(它可能存储在 iCloud 上)。一旦您对其进行任何操作,iOS 就会默默地为您下载该资源。

如果你真的想从你的反应本机代码中操作图像,这对你没有帮助,所以这里有一种解决方法:

import RNFS from 'react-native-fs';

getAssetFileAbsolutePath = async (assetPath) => {
    const dest = `${RNFS.TemporaryDirectoryPath}${Math.random().toString(36).substring(7)}.jpg`;

    try {
      let absolutePath = await RNFS.copyAssetsFileIOS(assetPath, dest, 0, 0);
    } catch(err) {
      // ...
    } 
  }
Run Code Online (Sandbox Code Playgroud)

请记住,这会将文件复制到临时目录,这意味着它不是永久的,您也可以将其复制到应用程序的文档目录。

  • 只是一个小修正,它被称为“copyAssetsFileIOS”:https://github.com/itinance/react-native-fs#copyassetsfileiosimageuri-string-destpath-string-width-number-height-number-scale--number--10 -压缩--数字--10-resizemode--字符串--包含---promisestring (2认同)