小程序点击图片实现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 相关文章推荐
编辑浪子版表单验证类
May 12 Javascript
关于javascript document.createDocumentFragment()
Apr 04 Javascript
js 删除数组的几种方法小结
Feb 21 Javascript
js Dialog 去掉右上角的X关闭功能
Apr 23 Javascript
基于js与flash实现的网站flv视频播放插件代码
Oct 14 Javascript
JS实现方向键切换输入框焦点的方法
Aug 19 Javascript
jQuery EasyUI Dialog拖不下来如何解决
Sep 28 Javascript
JS HTML5实现拖拽移动列表效果
Aug 27 Javascript
详解vue移动端项目代码拆分记录
Mar 15 Javascript
JQuery获取元素尺寸、位置及页面滚动事件应用示例
May 14 jQuery
浅谈一种让小程序支持JSX语法的新思路
Jun 16 Javascript
vue组件冲突之引用另一个组件出现组件不显示的问题
Apr 13 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线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
php检测url是否存在的方法
2015/04/14 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
深入解析PHP底层机制及相关原理
2020/12/11 PHP
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
监听element-ui table滚动事件的方法
2019/03/26 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
JavaScript实现无限轮播效果
2020/11/19 Javascript
python socket 超时设置 errno 10054
2014/07/01 Python
Python实现获取操作系统版本信息方法
2015/04/08 Python
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
Python中编写ORM框架的入门指引
2015/04/29 Python
Python IDLE入门简介
2017/12/08 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
opencv python 基于KNN的手写体识别的实例
2018/08/03 Python
python opencv minAreaRect 生成最小外接矩形的方法
2019/07/01 Python
深入浅析Python 命令行模块 Click
2020/03/11 Python
pandas分组聚合详解
2020/04/10 Python
详解Python中的Lock和Rlock
2021/01/26 Python
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
澳大利亚在线床零售商:Bedworks
2020/09/01 全球购物
最新教师自我评价分享
2013/11/12 职场文书
社会实践心得体会
2014/01/03 职场文书
食堂个人先进事迹
2014/01/22 职场文书
施工协议书范本
2014/04/22 职场文书
支行行长竞聘演讲稿
2014/05/15 职场文书
给学校的建议书范文
2014/05/15 职场文书
举起手来观后感
2015/06/09 职场文书
幼儿园园长新年寄语
2015/08/17 职场文书
学校运动会开幕词
2016/03/03 职场文书
如何用RabbitMQ和Swoole实现一个异步任务系统
2021/05/29 PHP