小程序点击图片实现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 相关文章推荐
纯CSS打造的导航菜单(附jquery版)
Aug 07 Javascript
jQuery选择器中含有空格的使用示例及注意事项
Aug 25 Javascript
一款基jquery超炫的动画导航菜单可响应单击事件
Nov 02 Javascript
javascript获取系统当前时间的方法
Nov 19 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
Jan 27 Javascript
Vuejs实现带样式的单文件组件新方法
May 02 Javascript
bootstrap动态添加面包屑(breadcrumb)及其响应事件的方法
May 25 Javascript
微信小程序实现团购或秒杀批量倒计时
Nov 01 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
Jul 12 Javascript
Vue.js的动态组件模板的实现
Nov 26 Javascript
vue制作toast组件npm包示例代码
Oct 29 Javascript
vue+iview实现分页及查询功能
Nov 17 Vue.js
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 has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
QQ登录 PHP OAuth示例代码
2011/07/20 PHP
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
PHP实现邮件群发的源码
2013/06/18 PHP
非常实用的PHP常用函数汇总
2014/12/17 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
thinkphp5使html5实现动态跳转的例子
2019/10/16 PHP
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
2013/04/28 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
js/html光标定位的实现代码
2013/09/23 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
js+html5实现页面可刷新的倒计时效果
2017/07/15 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
webpack下实现动态引入文件方法
2018/02/22 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
Angular7.2.7路由使用初体验
2019/03/01 Javascript
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
Python生成随机密码
2015/03/10 Python
Pycharm学习教程(2) 代码风格
2017/05/02 Python
python ubplot使用方法解析
2020/01/10 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
Super-Pharm波兰:药房和香水在一个地方
2020/08/18 全球购物
优质护理服务演讲稿
2014/05/07 职场文书
Go语言使用select{}阻塞main函数介绍
2021/04/25 Golang
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers
Golang map映射的用法
2022/04/22 Golang