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

好久不见. 提交于 2019-12-01 19:17:24
通过wx.previewImage预览图片时,会出现格式为png预览背景为黑色时,图片查看不清楚,能过下面的方法转化为白色底,方便查看
1、先用wx.getImageInfo 下载图片到本地,并且获取图片的信息;2、将图片画入canvas,并生成临时图片地址;3、将canvas生成的地址填写入imgList缓存起来;4、当所有图片都转化完成之后,调用wx.previewImage查看图片;5、每次转化完一片图片的时候,就重新绘制一下canvas;
//通过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()    //开画

    },

  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!