小程序点击图片,png转jpg,再预览方法
程序员文章站
2023-02-02 21:34:45
方法解释: 通过wx.previewImage预览图片时,会出现格式为png预览背景为黑色时,图片查看不清楚,能过下面的方法转化为白色底,方便查看 1、先用wx.getImageInfo 下载图片到本地,并且获取图片的信息; 2、将图片画入canvas,并生成临时图片地址; 3、将canvas生成的 ......
//页面数据初始化添加参数: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;
上一篇: 微笑之时,看到了里面的讽刺
下一篇: 袍状服装