用于反应本机应用程序的 PHAsset 图像 URI

Posted

技术标签:

【中文标题】用于反应本机应用程序的 PHAsset 图像 URI【英文标题】:PHAsset image URI for react native application 【发布时间】:2018-09-18 11:04:29 【问题描述】:

我正在编写一个原生 ios 组件,用于响应原生以从相机胶卷中获取 PHAsset。我正在努力展示一个 PHAsset 的上传,因为它没有提供正确的 URI 以用于本机反应,而且我也在编写一个上传组件。如何做到这一点。

【问题讨论】:

你好,这个库是你建的吗?我有兴趣使用它,谢谢 【参考方案1】:

我已经使用 expo-media-library 解决了这个问题 https://docs.expo.io/versions/latest/sdk/media-library

     async myFunc() 
     let uri = "ph://ED7AC36B-A150-4C38-BB8C-B6D696F4F2ED/L0/001"
     let myAssetId = uri.slice(5);
     let returnedAssetInfo = await MediaLibrary.getAssetInfoAsync(myAssetId);
     console.log(returnedAssetInfo.localUri); // you local uri link to get the file

`

【讨论】:

【参考方案2】:

React Native 目前对PHAsset(又名PHImageLibrary)URI 的支持非常复杂,例如photos://A6A2CEBD-766E-4BD7-980C-71ED7828674E/L0/001。它对已弃用的ALAssetsLibrary 有更好的支持,例如assets-library://asset/asset.MOV?id=A6A2CEBD-766E-4BD7-980C-71ED7828674E&ext=MOV(注意这是视频,不是照片,但想法是一样的)。

您会注意到其中的 ID 是相同的,只是前缀/后缀发生了变化。尝试自己操作字符串。

此外,基本上没有任何东西支持没有photos://assets-library:// 前缀的本地URI。 PHAssets 没有那个,因为~~~苹果的东西~~~。尝试在前面加上 photos://

旁注,这些 URI 将适用于 iCloud 中实际上不是本地的东西。

【讨论】:

以上是关于用于反应本机应用程序的 PHAsset 图像 URI的主要内容,如果未能解决你的问题,请参考以下文章

从 PHAsset 加载图像非常慢

无法在本机反应中显示多个图像

反应本机图像获取/上传

如何在本机反应中将捕获的图像保存到应用程序文件夹?

无法在本机反应中选择任何文档/图像(ANDROID 11)

为图像文件反应本机使用变量