//頁面資料初始化添加引數: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' ></canvas>
</view>
方法解釋:
通過wx.previewImage預覽圖片時,會出現格式為png預覽背景為黑色時,圖片查看不清楚,能過下面的方法轉化為白色底,方便查看
1、先用wx.getImageInfo 下載圖片到本地,并且獲取圖片的資訊;
2、將圖片畫入canvas,并生成臨時圖片地址;
3、將canvas生成的地址填寫入imgList快取起來;
4、當所有圖片都轉化完成之后,呼叫wx.previewImage查看圖片
5、每次轉化完一片圖片的時候,就重新繪制一下canvas;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/181618.html
標籤:JavaScript
上一篇:mpvue快速入門
下一篇:ES5_物件 與 繼承
