【问题标题】:React-Native Populate image with URL that has been converted from a blobReact-Native 使用已从 blob 转换的 URL 填充图像
【发布时间】:2016-11-17 03:12:52
【问题描述】:

我正在尝试使用 URl 填充图像

<Image source={{uri: this.state.imageURL}} style={styles.thumb} />

我使用 fetch API 从服务器请求图像,它返回一个 blob。

然后我使用以下行将 BLOB 转换为 URL:

var imageURL = window.URL.createObjectURL(attachmentBLOB);

当我 console.log() 它打印的 imageURL 时:

blob:http%3A//localhost%3A8081/4ce24d92-0b7e-4350-9a18-83b74bed6f87

我没有收到任何错误或警告。图片不显示

我正在使用安卓模拟器。

请帮忙。提前致谢!

【问题讨论】:

    标签: react-native fetch-api react-native-android


    【解决方案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} />
    

    【讨论】:

    • 如何显示 base64 图像。我使用了 RNFetchblob,它对图像进行了编码。但是在我的屏幕上它没有显示出来。 // 以 BASE64 编码的二进制字段数据 { name : 'pet-avatar', filename : 'pet-avatar.jpg', data : RNFetchBlob.base64.encode(image_data) },
    猜你喜欢
    • 2016-11-25
    • 2018-06-14
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    相关资源
    最近更新 更多