收藏
回答

为什么图片压缩后会泛白?

本人小白一名,最近在研究如何进行压缩裁剪过的图片,借鉴网上的代码时,电脑调试时完全没有问题,但是一到手机测试时,有两个大问题。一个是反应非常慢,一个500多kb的截图压缩到128kb以下,需要30多s甚至更多;第二个是压缩后的结果图片会泛白。这样的问题在电脑测试过程中从来没有过,想知道为什么会这样,以及有什么办法解决。急急急!!!跪谢各位大佬!!!

原图:

手机结果图:

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

2 个回答

  • 有棱角的胖子
    有棱角的胖子
    2021-04-28

    我是直接把图片压缩到最长边为720 质量压缩成85 不用循环压缩 很快的

    2021-04-28
    有用
    回复 8
    • 柒夏
      柒夏
      2021-04-28
      请问单次压缩能直接压缩到128K以下么?
      2021-04-28
      回复
    • 有棱角的胖子
      有棱角的胖子
      2021-04-28回复柒夏
      试过安卓手机可以,ios有的会超过一点
      2021-04-28
      回复
    • 有棱角的胖子
      有棱角的胖子
      2021-04-28回复柒夏
      2021-04-28
      回复
    • 有棱角的胖子
      有棱角的胖子
      2021-04-28回复柒夏
      2021-04-28
      回复
    • 有棱角的胖子
      有棱角的胖子
      2021-04-28回复柒夏
      2021-04-28
      回复
    查看更多(3)
  • 柒夏
    柒夏
    2021-04-28

    压缩图片的思路就是通过不断的递归一直压缩到图片大小小于设定的大小,下面是压缩主函数:

    function getCanvasImage(canvasId, imagePath, imageW, imageH, getImgsuccess) {

        const ctx = wx.createCanvasContext(canvasId);

        ctx.drawImage(imagePath, 0, 0, imageW, imageH);

        ctx.draw(false, setTimeout(function() {

            wx.canvasToTempFilePath({

                canvasId: canvasId,

                x: 0,

                y: 0,

                width: imageW,

                height: imageH,

                quality: 1,

                success: function(res) {

                    getImgsuccess(res.tempFilePath);

                },

            });

        }, 200));

      };

    2021-04-28
    有用
    回复
登录 后发表内容