小程序點擊圖片,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>

  

方法解釋:

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

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

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

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

4、當所有圖片都轉化完成之后,調用wx.previewImage查看圖片

5、每次轉化完一片圖片的時候,就重新繪制一下canvas;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM