微信小程序图片压缩的另类思路

在帮客户做小程序,期间要用到图片压缩,像素要求100px * 100px即可。

不多说了  ,上源码 (中间会有注释):

//定义一个添加图片的动作

 

addpic : function (e) {

var that = this;

const ctx = wx.createCanvasContext('myCanvas');//拿到当前使用的canvasID

wx.chooseImage({

count: 1, // 默认9

sizeType: ['compressed'], // 先让微信小程序自己压缩一次

sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有

success: function (res) {

var tempFilePaths = res.tempFilePaths;

        //getImageInfo 获取要上传的图片的宽度和高度,防止在压缩过程中变形

wx.getImageInfo({

src: tempFilePaths[0],

success: function (res) {

console.log(res.width)

console.log(res.height)

var picW = res.width, picH = res.height;

console.log(picH / picW * 200)

ctx.drawImage(tempFilePaths[0], 0, 0, 100, parseInt(picH / picW * 100)) //按比例对图片进行画图

ctx.draw(false, function () {

                //把画好的图 描下来,写成临时文件

wx.canvasToTempFilePath({

x: -200,

y: -200,

width: 100,

height: parseInt(picH / picW * 100),

destWidth: 100,

destHeight: parseInt(picH / picW * 100),

canvasId: 'myCanvas',

success: function (res) {

console.log(res.tempFilePath)

                    //描图成功以后,赋值

that.setData({ cXs: false, zhaopian: res.tempFilePath, tjzp: res.tempFilePath })

}

})

})             //开始上传图时,设置canvas所属view为可见,下一步描图需要

that.setData({ cXs: true });

}

})

}

});

}

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值