小程序点击图片实现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 相关文章推荐
IE 缓存策略的BUG的解决方法
Jul 21 Javascript
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
Dec 09 Javascript
基于jquery的地址栏射击游戏代码
Mar 10 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
Jun 16 Javascript
JavaScript实现的字符串replaceAll函数代码分享
Apr 02 Javascript
JavaScript与HTML的结合方法详解
Nov 23 Javascript
AngularJS 前台分页实现的示例代码
Jun 07 Javascript
select2 ajax 设置默认值,初始值的方法
Aug 09 Javascript
js前端面试之同步与异步问题详解
Apr 03 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
May 10 Javascript
在vue中使用echars实现上浮与下钻效果
Nov 08 Javascript
JavaScript简单编程实例学习
Feb 14 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 高手之路(一)
2006/10/09 PHP
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
Fine Uploader文件上传组件应用介绍
2013/01/06 PHP
基于php验证码函数的使用示例
2013/05/03 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
PHP捕获Fatal error错误的方法
2014/06/11 PHP
一个完整的php文件上传类实例讲解
2015/10/27 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
jquery photoFrame 图片边框美化显示插件
2010/06/28 Javascript
js中if语句的几种优化代码写法
2011/03/12 Javascript
基于jQuery的弹出框插件
2012/03/18 Javascript
jQuery实现的多屏图像图层切换效果实例
2015/05/07 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
JavaScript事件处理程序详解
2017/09/19 Javascript
浅谈React碰到v-if
2018/11/04 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
2019/04/14 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
js 数据类型判断的方法
2020/12/03 Javascript
五句话帮你轻松搞定js原型链
2020/12/09 Javascript
Python日志模块logging基本用法分析
2018/08/23 Python
python3学生名片管理v2.0版
2018/11/29 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
Python 可变类型和不可变类型及引用过程解析
2019/09/27 Python
如何在Django中使用聚合的实现示例
2020/03/23 Python
如何用python写个模板引擎
2021/01/14 Python
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
学校卫生检查制度
2014/02/03 职场文书
捐助感谢信
2015/01/22 职场文书
学校捐书倡议书
2015/04/27 职场文书
大学生就业意向书
2015/05/11 职场文书
红色电影观后感
2015/06/18 职场文书
go类型转换及与C的类型转换方式
2021/05/05 Golang