小程序点击图片实现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 相关文章推荐
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
Jan 29 Javascript
加速IE的Javascript document输出的方法
Dec 02 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
Mar 18 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
Feb 12 Javascript
基于JavaScript代码实现pc与手机之间的跳转
Dec 23 Javascript
微信小程序 flex实现导航实例详解
Apr 26 Javascript
vue.js框架实现表单排序和分页效果
Aug 09 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
Feb 26 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
Mar 02 Javascript
AngularJS 应用模块化的使用
Apr 04 Javascript
layui按条件隐藏表格列的实例
Sep 19 Javascript
JS实现简单随机3D骰子
Oct 24 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+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
JavaScript 动态将数字金额转化为中文大写金额
2009/05/14 Javascript
Javascript Math对象
2009/08/13 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
jQuery菜单插件用法实例
2015/07/25 Javascript
前端性能优化及技巧
2016/05/06 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
详解Vue 多级组件透传新方法provide/inject
2018/05/09 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
2019/04/26 Javascript
webpack的pitching loader详解
2019/09/23 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
为python设置socket代理的方法
2015/01/14 Python
Python简单读取json文件功能示例
2017/11/30 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
Python多线程扫描端口代码示例
2018/02/09 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
2019/03/22 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
优质有机椰子产品:Dr. Goerg
2019/09/24 全球购物
新媒传信软件测试面试题
2013/02/24 面试题
银行委托书范本
2014/04/04 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
初三毕业评语
2014/12/26 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python
python中__slots__节约内存的具体做法
2021/07/04 Python
JAVA API 实用类 String详解
2021/10/05 Java/Android
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript