//頁面數據初始化添加參數: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>
方法解釋:javascript
經過wx.previewImage預覽圖片時,會出現格式爲png預覽背景爲黑色時,圖片查看不清楚,能過下面的方法轉化爲白色底,方便查看java
一、先用wx.getImageInfo 下載圖片到本地,而且獲取圖片的信息;canvas
二、將圖片畫入canvas,並生成臨時圖片地址;數組
三、將canvas生成的地址填寫入imgList緩存起來;緩存
四、當全部圖片都轉化完成以後,調用wx.previewImage查看圖片this
五、每次轉化完一片圖片的時候,就從新繪製一下canvas;url