收藏
回答

wx.request返回的是图片的二进制数据,如何用image控件将其显示出来?

同标题

回答关注问题邀请回答
收藏

5 个回答

  • 社区技术运营专员-娇华
    社区技术运营专员-娇华
    2018-06-06

    你好,还有一个办法就是可以让后端直接返回图片链接给你哈,(#^.^#)


    2018-06-06
    有用
    回复 1
    • 风云
      风云
      2018-06-09

      也是,其实,也可能我根本就不想在服务器端保存文件,只是显示一个图片而已~~~

      2018-06-09
      回复
  • Mr.古月℡
    Mr.古月℡
    2019-02-15

    wx.request里面把responseType设成arraybuffer,然后成功之后wx.arrayBufferToBase64(res.data)转成base64。

    getValidateCode:function(){

        var that = this;

        wx.request({

            url: validateCodePath,

            method:'get',

            responseType: 'arraybuffer',

            success:function(res){

                const base64 = wx.arrayBufferToBase64(res.data);

                that.setData({

                    validateCodePath: "data:image/png;base64," + base64

                });

            }

        })

    }


    2019-02-15
    有用 3
    回复 1
    • 一思百解
      一思百解
      06-03
      本来是在做人脸核身的,一直被返回的图片乱码困扰。想不到在这里找到了答案,谢谢。
      06-03
      回复
  • 一思百解
    一思百解
    06-03

    这是我的例子,成功了,困扰了很多天。关键在于responseType: 'arraybuffer'

    const base64 = wx.arrayBufferToBase64(res.data)

    供大家参考。

    wx.request({
                        url`https://api.weixin.qq.com/cityservice/face/identify/getimage?access_token=33_jrZdgD8r-mFl7sFjuGViaNDYZKpOCbhqj7FVI2V6mMm5v5K4u8h`,
                        data: {
                            "verify_result": res.verifyResult
                        },
                        responseType'arraybuffer',
                        method'POST',
                        success(res) => {
                            console.log('res', res)
                            const base64 = wx.arrayBufferToBase64(res.data);
                            this.setData({
                                imgsrc'data:image/jpg;base64,' + base64
                            })
    



    06-03
    有用
    回复
  • 风云
    风云
    2018-06-06

    不行啊,发送的是获取小程序码的请求,我无法控制啊

    wx.request({ //获取小程序码
              url: "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + getApp().globalData.access_token, //仅为示例,并非真实的接口地址
              header: {
                'content-type': 'application/json' // 默认值
              },
              data:{
                scene: json.content,
                page:"pages/news/detial",
                width:430
              },
              method:"POST",
              success: function (res) {
                var json = res.data;//获取的html文本信息
                console.log('小程序码:')
                console.log(res);
                // that.setData({img: json})
                wx.hideNavigationBarLoading();
              }
            })


    2018-06-06
    有用
    回复 1
    • 风云
      风云
      2018-06-09

      其实wx.request( )返回的data图片数据本身就是错误,不管访问哪里的图片,都是错误的,不管他们承认不承认,


      所以转为base64来显示就是一种奢想了,只能在服务器端请求了~~~

      2018-06-09
      回复
  • 解析
    解析
    2018-06-06

    var that=this;

    wx.downloadFile({

        url:'**********'

        success:function(e){

            that.setData({

                    imgPath:e.tempFilePath

            });

        }

    })



    这样不行吗?

    2018-06-06
    有用
    回复 1
    • 风云
      风云
      2018-06-09

      不是说这样不行,是说他wx.request( )有bug,当返回是图片时,其实应该是他们封装时出错了~~~

      2018-06-09
      回复
登录 后发表内容