欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-02-02 21:34:45
方法解释: 通过wx.previewImage预览图片时,会出现格式为png预览背景为黑色时,图片查看不清楚,能过下面的方法转化为白色底,方便查看 1、先用wx.getImageInfo 下载图片到本地,并且获取图片的信息; 2、将图片画入canvas,并生成临时图片地址; 3、将canvas生成的 ......
//页面数据初始化添加参数: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;