小程序点击图片实现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变量以及其作用域详解
Jul 18 Javascript
JS 终止执行的实现方法
Nov 24 Javascript
layui选项卡效果实现代码
May 19 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
Nov 20 Javascript
vue.js父子组件通信动态绑定的实例
Sep 28 Javascript
微信小程序实现省市区三级地址选择
Jun 21 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
Mar 13 Javascript
微信小程序云开发修改云数据库中的数据方法
May 18 Javascript
vue-router的两种模式的区别
May 30 Javascript
js实现选项卡效果
Mar 07 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
Oct 28 Javascript
javascript实现数字时钟效果
Feb 06 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在Web开发领域的优势
2006/10/09 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
CI框架开发新浪微博登录接口源码完整版
2014/05/28 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
2019/10/12 PHP
php使用event扩展的io复用测试的示例
2020/10/20 PHP
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
JS模拟自动点击的简单实例
2013/08/08 Javascript
获取数组中最大最小值方法js代码(自写)
2013/08/12 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
JS实现来回出现文字的状态栏特效代码
2015/10/31 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
微信小程序当前时间时段选择器插件使用方法详解
2018/12/28 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
ECharts地图绘制和钻取简易接口详解
2019/07/12 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
2017/06/16 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
python实现录音小程序
2020/10/26 Python
Python实现名片管理系统
2020/02/14 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例
2016/02/28 HTML / CSS
DataReader和DataSet的异同
2014/12/31 面试题
介绍一下你对SOA的认识
2016/04/24 面试题
留学自荐信的技巧
2013/10/17 职场文书
师说教学反思
2014/02/07 职场文书
2014教师研修学习体会
2014/07/08 职场文书
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
maven依赖的version声明控制方式
2022/01/18 Java/Android
MySQL中order by的执行过程
2022/06/05 MySQL