React-native - 使用已转换为 URL 的 Blob 填充图像

Posted

技术标签:

【中文标题】React-native - 使用已转换为 URL 的 Blob 填充图像【英文标题】:React-native - Populate image with Blob that has been converted to a URL 【发布时间】:2016-11-25 04:59:20 【问题描述】:

我想用 uri 填充图像。 我从服务器请求图像,它返回一个 BLOB。

BLOB 显示到控制台时:

然后我将 BLOB 转换为具有以下行的 URL:

var blobUrl = URL.createObjectURL(blob);  

blobUrl 显示到控制台时

然后我尝试使用 URL 填充图像:

<Image source=uri: blobURL style=width: 100, height: 50 />

图像不会显示。我该怎么办?

我正在使用连接到 localhost 的 android 模拟器。可能与将 BLOB url 存储到 localhost 的情况有关?

或者它可能是一个简单的语法错误?

谢谢。

【问题讨论】:

【参考方案1】:

解决方案

React-Native 不支持 blob [参考:Git/React-Native]。为了让它工作,我必须下载react-native-fetch-blob,它返回一个base64字符串。

返回base64字符串的函数:

var RNFetchBlob = require('react-native-fetch-blob').default;

getImageAttachment: function(uri_attachment, mimetype_attachment) 

  return new Promise((RESOLVE, REJECT) => 

    // Fetch attachment
    RNFetchBlob.fetch('GET', config.apiRoot+'/app/'+uri_attachment)
      .then((response) => 

        let base64Str = response.data;
        var imageBase64 = 'data:'+mimetype_attachment+';base64,'+base64Str;
        // Return base64 image
        RESOLVE(imageBase64)
     )

   ).catch((error) => 
   // error handling
   console.log("Error: ", error)
 );
,

使用 base64 填充图像 然后我使用返回的 base64Image 填充图像:

<Image source=uri: imageBase64 style=styles.image />

【讨论】:

【参考方案2】:

收到 blob 后:

let imageUri = "data:image/png;base64," + blob;

<Image source=uri: imageUri, scale: 1 style=height: 30, width: 30/>

【讨论】:

【参考方案3】:

可能被react-native-fetch-blob解决,是关于issue #854

【讨论】:

谢谢你的权利。几天前我让它工作了。我只是没有机会详细描述我是如何做到的。

以上是关于React-native - 使用已转换为 URL 的 Blob 填充图像的主要内容,如果未能解决你的问题,请参考以下文章

React-Native 获取 XML 数据

使用 React-Native 将 content:// URI 转换为 Android 的实际路径

React-Native Camera 错误 - 没有为资产库找到合适的 URL 请求处理程序

firebase react-native:通过电话身份验证将匿名用户转换为永久用户

如何在 react-native 中将 JPG 图像转换为 PNG

带有 Typescript 的 React-Native 自定义文本组件:“将 React.ReactNode 类型转换为文本类型......”