小程序点击图片,png转jpg,再预览方法

发布时间:2019-10-21 22:00:16发布者:Mr.Zhang阅读(324)

//页面数据初始化添加参数: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;





本文转自博客园,原文地址:https://www.cnblogs.com/leepyng/p/11713989.html