小程序点击图片实现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 相关文章推荐
XP折叠菜单&amp;仿QQ2006菜单
Dec 16 Javascript
JavaScript 内置对象属性及方法集合
Jul 04 Javascript
在JavaScript中使用对数Math.log()方法的教程
Jun 15 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
Sep 12 Javascript
基于JavaScript怎么实现让歌词滚动播放
Nov 03 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
Oct 18 Javascript
angular.js指令中的controller、compile与link函数的不同之处
May 10 Javascript
JavaScript正则表达式简单实用实例
Jun 23 Javascript
前端主流框架vue学习笔记第一篇
Jul 26 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
Aug 23 Javascript
layer.open回调获取弹出层参数的实现方法
Sep 10 Javascript
解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题
Jul 21 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
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
JQuery通过Ajax提交表单并返回结果
2011/07/31 Javascript
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
2013/12/14 Javascript
javascript记录文本框内文字个数检测文字个数变化
2014/10/14 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
使用vue2.0创建的项目的步骤方法
2018/09/25 Javascript
利用Promise自定义一个GET请求的函数示例代码
2019/03/20 Javascript
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
python使用epoll实现服务端的方法
2018/10/16 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
Python简单实现区域生长方式
2020/01/16 Python
Python实现的北京积分落户数据分析示例
2020/03/27 Python
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
医药类个人求职的自我评价
2014/02/12 职场文书
副护士长竞聘演讲稿
2014/04/30 职场文书
日语系毕业求职信
2014/07/27 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
总经理助理岗位职责
2015/01/31 职场文书
市场部岗位职责
2015/02/12 职场文书
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript
JS函数式编程实现XDM一
2022/06/16 Javascript