小程序點擊圖片,png轉jpg,再預覽方法

//頁面數據初始化添加參數: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>

  

方法解釋:javascript

 經過wx.previewImage預覽圖片時,會出現格式爲png預覽背景爲黑色時,圖片查看不清楚,能過下面的方法轉化爲白色底,方便查看java

一、先用wx.getImageInfo 下載圖片到本地,而且獲取圖片的信息;canvas

二、將圖片畫入canvas,並生成臨時圖片地址;數組

三、將canvas生成的地址填寫入imgList緩存起來;緩存

四、當全部圖片都轉化完成以後,調用wx.previewImage查看圖片this

五、每次轉化完一片圖片的時候,就從新繪製一下canvas;url

相關文章
相關標籤/搜索