社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
//页面数据初始化添加参数:isSignCanvassShow
//通过canvas将图片转为jpg,使图片生成白色底便于查看预览
//list为原图片数组列表,index表示当前图片下标, //imgList表示已经通过canvas转化的图片列表 trasformImgType(list,index,imgList){ this.setData({ isSignCanvasShow:true }); index=index?index:0; const that=this; let img=list[index].fileUrl; img=img.replace(/http/,'https'); tip.loading('正在打开图片'); //获取图片信息, wx.getImageInfo({ src: img, success (res) { //画入canvas const context = wx.createCanvasContext('picCanvas'); that.resetCanvas(context); context.drawImage(res.path,0, 0); context.draw(false,function(drawed){ // console.log(drawed); wx.canvasToTempFilePath({ x: 0, y: 0, width: 414, height: 300, destWidth: 414, destHeight:300, fileType: 'jpg', canvasId: 'picCanvas', success(imgRes) { tip.loaded(); imgList.push(imgRes.tempFilePath); if(index<list.length-1){ that.trasformImgType(list,index+1,imgList) return; } that.setData({ isSignCanvasShow:false }) wx.previewImage({ current: '', //图标当前下标 urls: imgList, // 需要预览的图片http链接列表 fail:function(res){ tip.alert('图片过期需刷新'); }, }) }, fail() { that.setData({ isSignCanvasShow:false }) tip.loaded(); tip.alert('图片过期需刷新'); } }) } ) } }) }, //重绘画板 resetCanvas(context){ context.rect(0, 0, this.data.screenWidth, this.data.screenHeight - 4); //画板大小 context.setFillStyle('#fff');//背景填充 context.fill() //设置填充 context.draw() //开画 },
wxml文件需要添加如下代码:
<view hidden="{{!isSignCanvasShow}}"> <canvas canvas-id="picCanvas" id='picCanvas' class="pic-canvas" ></canvas> </view>
方法解释:
通过wx.previewImage预览图片时,会出现格式为png预览背景为黑色时,图片查看不清楚,能过下面的方法转化为白色底,方便查看
1、先用wx.getImageInfo 下载图片到本地,并且获取图片的信息;
2、将图片画入canvas,并生成临时图片地址;
3、将canvas生成的地址填写入imgList缓存起来;
4、当所有图片都转化完成之后,调用wx.previewImage查看图片
5、每次转化完一片图片的时候,就重新绘制一下canvas;
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!