小程序点击图片实现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事件Event元素(兼容IE,Firefox,Chorme)
Nov 01 Javascript
javascript日期格式化示例分享
Mar 05 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
Jun 07 Javascript
JavaScript中的单引号和双引号报错的解决方法
Sep 01 Javascript
JS+CSS实现带小三角指引的滑动门效果
Sep 22 Javascript
微信小程序 标签传入数据
May 08 Javascript
Angularjs的$http异步删除数据详解及实例
Jul 27 Javascript
基于Vue的移动端图片裁剪组件功能
Nov 28 Javascript
vue中实现在外部调用methods的方法(推荐)
Feb 08 Javascript
微信小程序自定义toast弹窗效果的实现代码
Nov 15 Javascript
JavaScript动画实例之粒子文本的实现方法详解
Jul 28 Javascript
jQuery插件实现图片轮播效果
Oct 19 jQuery
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中的按位与和按位或操作示例
2014/01/27 PHP
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
PHP CURL 多线程操作代码实例
2015/05/13 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
PHP获取昨天、今天及明天日期的方法
2016/02/03 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
2019/03/22 PHP
Jquery+JSon 无刷新分页实现代码
2010/04/01 Javascript
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
jquery+ajax实现省市区三级联动效果简单示例
2017/01/04 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
微信小程序实现折叠面板
2018/01/31 Javascript
详解Vue组件插槽的使用以及调用组件内的方法
2018/11/13 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
深入理解 TypeScript Reflect Metadata
2019/12/12 Javascript
JS跨浏览器解析XML应用过程详解
2020/10/16 Javascript
elementUI同一页面展示多个Dialog的实现
2020/11/19 Javascript
Nodejs 微信小程序消息推送的实现
2021/01/20 NodeJs
[01:23:59]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 VP vs Secret
2018/04/03 DOTA
Python回调函数用法实例详解
2015/07/02 Python
速记Python布尔值
2017/11/09 Python
Python中 map()函数的用法详解
2018/07/10 Python
Python高级特性与几种函数的讲解
2019/03/08 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
岗位竞聘演讲稿范文
2014/04/24 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
司机个人年终总结
2015/03/03 职场文书
本科毕业论文致谢词
2015/05/14 职场文书