小程序点击图片实现png转jpg


Posted in Javascript onOctober 22, 2019

这篇文章主要介绍了小程序点击图片实现png转jpg,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js可突破windows弹退效果代码
Aug 09 Javascript
javascript和jquery实现设置和移除文本框默认值效果代码
Jan 13 Javascript
javascript中CheckBox全选终极方案
May 20 Javascript
浅谈javascript原型链与继承
Jul 13 Javascript
学习JavaScript设计模式之迭代器模式
Jan 19 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
Jun 12 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
Nov 10 Javascript
node.js中debug模块的简单介绍与使用
Apr 25 Javascript
jQuery+ajax实现局部刷新的两种方法
Jun 08 jQuery
JS实现的简单表单验证功能完整实例
Oct 14 Javascript
从零开始封装自己的自定义Vue组件
Oct 09 Javascript
JavaScript React如何修改默认端口号方法详解
Jul 28 Javascript
Node.js 实现抢票小工具 &amp; 短信通知提醒功能
Oct 22 #Javascript
微信小程序实现左侧滑动导航栏
Apr 08 #Javascript
微信小程序自定义组件components(代码详解)
Oct 21 #Javascript
微信小程序实现侧边分类栏
Oct 21 #Javascript
微信小程序实现侧边栏分类
Oct 21 #Javascript
微信小程序中weui用法解析
Oct 21 #Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
Oct 21 #Javascript
You might like
php缓冲 output_buffering的使用详解
2013/06/13 PHP
PHP获取MAC地址的具体实例
2013/12/13 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
php实现简单文件下载的方法
2015/01/30 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
2017/05/15 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
2018/08/17 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
Javascript 不能释放内存.
2006/09/07 Javascript
js类中获取外部函数名的方法
2007/08/19 Javascript
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
jQuery绑定事件的几种实现方式
2016/05/09 Javascript
快速解决js中window.location.href不工作的问题
2016/11/02 Javascript
jquery插入兄弟节点的操作方法
2016/12/07 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
2017/07/31 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
2018/08/30 Javascript
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
Python操作MySQL模拟银行转账
2018/03/12 Python
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
大学生写自荐信的技巧
2014/01/08 职场文书
旅游节目策划方案
2014/05/26 职场文书
店铺转让协议书
2015/01/29 职场文书
保外就医申请书范文
2015/08/06 职场文书
2019请假条的基本格式及范文!
2019/07/05 职场文书
PHP遍历数组的6种方式总结
2021/11/17 PHP