收藏
回答

微信 JSSDK chooseImage 接口 sizeType 的参数无效

问题模块 框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
API和组件 小程序 Bug chooseImage 客户端 Android 6.6.6 2.0.8

在安卓手机上的微信内核与IOS的内核不一样,导致了chooseImage 的参数有问题,安卓手机上的选择原图的参数是无效的,个人认为这是个bug,sizeType 参数有两个,'original' : 原图、'compressed' : 压缩。

    1.IOS下是无问题的,安卓下参数选择 original 无效(无效的意思是显示在页面上市压缩图 ,应该是base64 处理过了)

    2.当安卓选择 original  参数时,再通过上传图片的接口,发现图片是能选择原图的,通过上传到微信服务器,后通过 accessToken 与 serverId 获取到图片的资源地址时,图片是原图的



    猜想:

        1.难道在安卓手机上的 original 原图通过 base64 的压缩了?需要把图片还原才能获取原图?

最后一次编辑于  2018-05-31  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

7 个回答

  • 漫漫迷途终有归
    漫漫迷途终有归
    2018-05-31

    被这个问题卡了好久,经过多次验证,如果想在前端直接获取图片的base流,不管设置'original' : 原图还是'compressed' : 压缩都不管用,安卓和ios下获取的base流都是缩略图的,只不过ios下的获取的缩略图清晰度较高,不影响使用,可以继续使用。安卓下就比较坑了,缩略图惨不忍睹。安卓下想要获取到清晰度较高的图片,只能先将图片上传到微信服务器,然后让后端去下载,这样就能获得到清晰度较高的图片。

    经过多次验证,其实微信对图片的压缩策略相当不错,这里就不细说了。压缩图的清晰度也是很高的,基本可以满足需求,所以向微信服务器上传图片的时候最好上传压缩图,如果上传原图的话,现在手机照片一般都比较大,加上上传带宽比的限制,传一张图片需要很久,而且由于时间过长很容易失败。

    2018-05-31
    赞同 1
    回复 7
    • KAM
      KAM
      2018-05-31

      IOS的'original' 的参数压缩后的确很高清,可能是因为安卓和IOS的微信浏览器的内核不一样

      2018-05-31
      回复
    • 漫漫迷途终有归
      漫漫迷途终有归
      2018-05-31回复KAM

      不管在安卓还是ios下,微信的压缩图清晰度都是很高的,只不过是你并没有取到正确的压缩图,取到的是缩略图

      2018-05-31
      回复
    • KAM
      KAM
      2018-05-31回复漫漫迷途终有归

      请教怎样才能渠道安卓的高清压缩图呢?

              我试过在 chooseImage 接口返回的 localId,通过 getLocalImgData 这个接口,在安卓上是可以获取到base64的,具体是不是高清我还没看,但是 getLocalImgData 这个接口会有一点卡。

              getLocalImgData 这个接口是通过本地图片转换成 base64的

      2018-05-31
      回复
    • 漫漫迷途终有归
      漫漫迷途终有归
      2018-05-31回复KAM

      获得localId后,使用wx.uploadImage将图片上传到微信服务器,然后让后端去微信服务器下载,这样取到的图片就是高清的压缩图。

      getLocalImgData 这个接口虽然在安卓下也能用,但取到的base流是不完整的,需要在base流前拼接"data:image/jpeg;base64,"字符串,前面说到过,使用这个接口,不管在安卓下还是ios下取到base流都是缩略图的,不是原图或者压缩图的

      2018-05-31
      回复
    • KAM
      KAM
      2018-05-31回复漫漫迷途终有归

      我现在的解决办法就是通过上传服务器解决的,获得的地址是通过accessToken + serverId  获取,现在也只能这样子了,不知道微信服务器会不会对图片进行删除

      2018-05-31
      回复
    查看更多(2)
  • 宋晨涛
    宋晨涛
    2018-05-31

    小白一枚,还请见谅

    2018-05-31
    赞同
    回复
  • 卓瑜
    卓瑜
    2018-05-31

    没用过这接口,具体问题也没看明白,见谅

    2018-05-31
    赞同
    回复
  • 桶子💋
    桶子💋
    2018-05-31

    微信在安卓端返回的图片是压缩后的 这个猜想再15年就有了 结论是安卓端微信就是这么设置的,IOS 就是质量好些。

    2018-05-31
    赞同
    回复 7
    • KAM
      KAM
      2018-05-31
      在安卓微信浏览器中,选择图片后获取到的图片地址是 "wxLocalResource://imageid123456789987654321" 类似这样子的本地图片路径,但是IOS就是直接base64的,base64是没压缩过的。但是安卓在选择图片后接着上传就是不压缩的,为什么同是安卓选择图片,一个现实出来是压缩的,一个上传就是不压缩的
      2018-05-31
      回复
    • 桶子💋
      桶子💋
      2018-05-31回复KAM

      应该都是压缩的吧 安卓端 为了省内存以及提高速度  建议还是直接后端服务器下载吧

      2018-05-31
      回复
    • KAM
      KAM
      2018-05-31回复桶子💋
      我现在的解决办法就是通过上传服务器解决的,获得的地址是通过 accessToken +  serverId  获取,现在也只能这样子了,不知道微信服务器会不会对图片进行删除
      2018-05-31
      回复
    • 桶子💋
      桶子💋
      2018-05-31回复KAM

      我记得是保存三天来着

      2018-05-31
      回复
    • KAM
      KAM
      2018-05-31回复桶子💋

      好的,感谢你的回复

      2018-05-31
      回复
    查看更多(2)
  • 魏金海starm
    魏金海starm
    2018-05-31

    没使用原图上传,都是压缩的的。省内存。

    2018-05-31
    赞同
    回复 1
    • KAM
      KAM
      2018-05-31
      安卓下的压缩,简直惨不忍睹,太模糊了
      2018-05-31
      回复
  • LLQ
    LLQ
    2018-05-31

    学习了

    2018-05-31
    赞同
    回复
  • Blue  fish
    Blue fish
    08-29

    有没有办法在选中图片,拿到localId之后自己主动压缩的方法。。

    08-29
    赞同
    回复