这篇文章主要介绍了小程序点击图片实现png转jpg,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
页面数据初始化添加参数:isSignCanvassShow<br><br>//通过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;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。