1. //页面数据初始化添加参数:isSignCanvassShow
  2.  
  3. //通过canvas将图片转为jpg,使图片生成白色底便于查看预览
  1. //list为原图片数组列表,index表示当前图片下标,
  2. //imgList表示已经通过canvas转化的图片列表
  3. trasformImgType(list,index,imgList){
  4. this.setData({
  5. isSignCanvasShow:true
  6. });
  7. index=index?index:0;
  8. const that=this;
  9. let img=list[index].fileUrl;
  10. img=img.replace(/http/,'https');
  11. tip.loading('正在打开图片');
  12. //获取图片信息,
  13. wx.getImageInfo({
  14. src: img,
  15. success (res) {
  16. //画入canvas
  17. const context = wx.createCanvasContext('picCanvas');
  18. that.resetCanvas(context);
  19. context.drawImage(res.path,0, 0);
  20. context.draw(false,function(drawed){
  21. // console.log(drawed);
  22. wx.canvasToTempFilePath({
  23. x: 0,
  24. y: 0,
  25. width: 414,
  26. height: 300,
  27. destWidth: 414,
  28. destHeight:300,
  29. fileType: 'jpg',
  30. canvasId: 'picCanvas',
  31. success(imgRes) {
  32. tip.loaded();
  33. imgList.push(imgRes.tempFilePath);
  34. if(index<list.length-1){
  35. that.trasformImgType(list,index+1,imgList)
  36. return;
  37. }
  38. that.setData({
  39. isSignCanvasShow:false
  40. })
  41. wx.previewImage({
  42. current: '', //图标当前下标
  43. urls: imgList, // 需要预览的图片http链接列表
  44. fail:function(res){
  45. tip.alert('图片过期需刷新');
  46. },
  47. })
  48. },
  49. fail() {
  50. that.setData({
  51. isSignCanvasShow:false
  52. })
  53. tip.loaded();
  54. tip.alert('图片过期需刷新');
  55. }
  56. })
  57. } )
  58. }
  59. })
  60. },
  61. //重绘画板
  62. resetCanvas(context){
  63. context.rect(0, 0, this.data.screenWidth, this.data.screenHeight - 4); //画板大小
  64. context.setFillStyle('#fff');//背景填充
  65. context.fill() //设置填充
  66. context.draw() //开画
  67.  
  68. },

  

  1. wxml文件需要添加如下代码:
  1. <view hidden="{{!isSignCanvasShow}}">
  2.   <canvas canvas-id="picCanvas" id='picCanvas' class="pic-canvas" ></canvas>
  3. </view>

  

方法解释:

通过wx.previewImage预览图片时,会出现格式为png预览背景为黑色时,图片查看不清楚,能过下面的方法转化为白色底,方便查看

1、先用wx.getImageInfo 下载图片到本地,并且获取图片的信息;

2、将图片画入canvas,并生成临时图片地址;

3、将canvas生成的地址填写入imgList缓存起来;

4、当所有图片都转化完成之后,调用wx.previewImage查看图片

5、每次转化完一片图片的时候,就重新绘制一下canvas;

小程序点击图片,png转jpg,再预览方法的更多相关文章

  1. 微信小程序点击图片放大预览

    微信小程序点击图片放大预览使用到 wx.previewImage 接口,可以放大.上/下一张 上代码 wxml代码 <view class='content-img' wx:if="{ ...

  2. 微信小程序点击图片全屏

    作为一个只懂简单HTML,jQuery,JS的web后台开发者,最近在学习小程序开发,现在将小程序的点击全屏功能的相关内容记录下来.如果有不对的地方或者有更简单的方法,请留言指教 0_0~ .js 文 ...

  3. 微信小程序点击图片预览-wx.previewImage

    <view class='imgList'> <view class='imgList-li' wx:for='{{imgArr}}'> <image class='im ...

  4. 微信小程序点击图片放大

    WXML: <view class='imgList'> <view class='imgList-li' wx:for='{{imgArr}}'> <image cla ...

  5. 微信小程序-点击图片预览

    拿接口  有封装 封装查看另外的博文 点击动作 WXHTML 注意 data-xxxx自定义属性 这样知道我点的是哪个参数

  6. 微信小程序开发之图片预览

    实现图片的展示和大图预览 使用wx.previewImage(OBJECT)来实现 OBJECT参数说明: 参数 类型 必填 说明 current String 否 当前显示图片的链接,不填则默认为 ...

  7. Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作

    Visual Studio 2017中使用正则修改部分内容   最近在项目中想实现一个小工具,需要根据类的属性<summary>的内容加上相应的[Description]特性,需要实现的效 ...

  8. 微信小程序点击控制元素的显示与隐藏

    微信小程序点击控制元素的显示与隐藏 首先我们先来看一下单个点击效果 我们来看一下wxml中的代码: <view class="conten"> <view cla ...

  9. 小程序点击跳转外部链接 微信小程序提示:不支持打开非业务域名怎么办 使用web-view 配置业务域名

    小程序点击跳转外部页面 1.index.wxml  添加点击事件   标签可以是小程序支持的 <!-- 邀请好友 --> <cover-image src='/img/invitat ...

随机推荐

  1. [MyBatis]浅谈如何实现事务处理

    要实现事务处理,就得从SqlSession中取出connection来,然后对connection采用setAutoCommit,commit,rollback等操作,最后的时候,不能像JDBC一样关 ...

  2. oracle OPEN FOR [USING] 语句

    目的:        和ref cursor配合使用, 可以将游标变量分配给不同的SQL (而不是在declare中把游标给定死), 增加处理游标的灵活性语法: declare type type_c ...

  3. Java同步数据结构之ConcurrentLinkedQueue

    前言 前面介绍的Queue都是通过Lock锁实现的阻塞队列,今天介绍一种非阻塞队列ConcurrentLinkedQueue,所谓非阻塞,其实就是通过CAS代替加锁来实现的高效的非阻塞队列.当许多线程 ...

  4. 七天学会ASP.NET MVC

    地址一: http://www.cnblogs.com/powertoolsteam/p/MVC_one.html http://www.cnblogs.com/powertoolsteam/p/MV ...

  5. qt ui

    /******************************************************************************** ** Form generated ...

  6. postgresql之 drop & delete & truncate

    官网:https://www.postgresql.org/docs/8.1/sql-droptable.html Name DROP TABLE -- remove a table Synopsis ...

  7. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_11-freemarker静态化测试-基于模板字符串静态化

    再定义一个测试方法 把拿到的字符串变成模板 加载器设置好了以后, 加一个断点来测试 生成模板文件 上面这种方式很灵活. 最终代码 @Test public void testGenerateHtmlB ...

  8. Django:(07)数据库

    一.ORM框架 ORM ,Object relational mapping 对象关系映射. 把类和数据库表对应,把对象和表记录对应,通过类和对象操作数据库表中的数据,而不需要编写SQL语句. Dja ...

  9. 自学电脑游戏第三天(Swing组件)

    Swing组件 1.按钮(Jbutton) 示例:选择用户所喜欢的城市. import java.awt.*; import java.awt.event.*; import javax.swing. ...

  10. org.springframework.http.converter.HttpMessageNotReadableException

    发起请求报错:org.springframework.http.converter.HttpMessageNotReadableException 查看请求头: application/json 所以 ...