收藏
回答

有对图片处理(压缩)有经验的大佬指点下思路吗?

业务需求很常规,把用户的图片(多张,类似发朋友圈)传到服务端保存起来,同时再想办法得到每张图片的缩略图,以便在列表上显示缩略图,点开显示高清原图。首先尝试了小程序的接口wx.compressImage,因为不支持改变图片分辨率(长宽像素),仅改变质量,这样的压缩效果不理想,比如一个2M的图片,压缩完可能还有800K。

另外两个思路都还不成熟,有没有大佬指点下?

一个思路是仍然在小程序端做,用canvas把原图放进来,再导出一个改变了分辨率的压缩图片,这个方案有个体验问题,因为canvas不能隐藏起来执行,会导致整个压缩过程让用户看到,看起来很诡异,不知道是否存在巧妙的手段规避?

另一个思路是放服务端做,因为我用的是官方的云开发环境,可否推荐一下靠谱的图片压缩nodejs模块?是否还存在其他问题要考虑,比如这里又需要云函数把图片从云存储中下载过来,压缩好之后再传一个压缩图回到云存储,这里的流量损耗和时间损耗看起来都不小。

还有没有其他办法?


BTW:其实官方如果能支持是最好的了,无论是尽快完善wx.compressImage,还是云存储支持存一个图片时自动生成几个不同规格质量的压缩图片供调取,有人可以把需求转给官方吗?

最后一次编辑于  04-09
回答关注问题邀请回答
收藏

5 个回答

  • Admin²⁰²⁰
    Admin²⁰²⁰
    04-09
    一个思路是仍然在小程序端做,用canvas把原图放进来,再导出一个改变了分辨率的压缩图片,这个方案有个体验问题,因为canvas不能隐藏起来执行,会导致整个压缩过程让用户看到,看起来很诡异,不知道是否存在巧妙的手段规避?
    
    这个设置top为-99999就好了
    
    


    另外,可以使用成熟的oss方案,比如阿里oss,可以直接提供指定分辨率的缩略图功能。你用compressImage压缩图片后上传到oss,要使用缩略图时,获取缩略图链接url显示就好了。预览时获取原图就好了。

    04-09
    有用 2
    回复 1
    • 郑旭东
      郑旭东
      发表于小程序端
      04-09
      嗯,阿里OSS是个选项
      04-09
      回复
  • worm
    worm
    04-09
    canvas利用定位,然后left设置为-9999,用户就看不见了
    04-09
    有用 2
    回复 5
    • 卢霄霄
      卢霄霄
      04-09
      建议上下 不要左右,iOS上跟某些定位会导致整个页面可以左右滑
      04-09
      1
      回复
    • worm
      worm
      04-09回复卢霄霄
      fixed目前还没有发现这个问题  什么机型
      04-09
      回复
    • 卢霄霄
      卢霄霄
      04-09回复worm
      手机换安卓了,不过继续这样用下去 有天肯定会遇见的
      04-09
      回复
    • worm
      worm
      04-09回复卢霄霄
      好的  我的理解是fixed脱离文档流了不应该出现你说的问题  如果真的出现了可以在最外面的标签加上overflow-x:hidden;横向出现滚动条  纵向不应该也会出现么  那是不是会影响到页面的滚动
      04-09
      回复
    • 卢霄霄
      卢霄霄
      04-09回复worm
      具体原因我还没搞懂,加了hidden也没用,安卓上不会出现 只有iOS会有。。遇见了再讨论吧
      04-09
      回复
  • EVA
    EVA
    04-09

    canvas 绘制,设置透明度与禁用操作

    04-09
    有用 1
    回复
  • 軍亜~
    軍亜~
    04-09

    canvas方案就很好了

    04-09
    有用 1
    回复
  • 小肥羊
    小肥羊
    04-09
    关注下,
    04-09
    有用
    回复
登录 后发表内容
问题标签