探索、思考、创造、分享

数据驱动、坚持为客户提供有价值的服务和内容

当前位置:首页>小程序资讯
深入解析微信小程序页面中实现的保存图片(附代码)
来源:南京小程序开发 发布时间:2023-09-07点击:118

之前的文章《浅析微信小程序和web之间的交互(代码分享)》中,给大家了解一下微信小程序和web之间的交互。下面本篇文章给大家了解一下微信小程序页面中实现的保存图片,有需要的朋友可以参考一下,希望对你们有帮助。

背景

webviewjs-sdksaveImageToPhotosAlbum
web

解决思路

js-sdk

分三步

htmlbase64postmessage
let img = new Image();
img.src = "xxxx"; //这里是图片的src
img.crossOrigin = "anonymous"; //The opeartaion is insecure . 其它跨域的问题 自行代理解决
img.onload = function () {
  let canvas = document.createElement("canvas");
  canvas.width = img.width;
  canvas.height = img.height;
  let ctx = canvas.getContext("2d");
  ctx.drawImage(this, 0, 0);
  let imgBase64Data = canvas.toDataURL("image/jpeg", 1); //这里就拿到了base64
  wx.miniProgram.postMessage({
    data: {
      imgData: imgBase64Data, // 刚才拿到的base64 数据
    },
  });
};
postmessagebase64
// wxml
<
web - view src = "http://www.chuchur.com/save-image"
bindmessage = "getMessage" > < /web-view>
// js
Page({
    data: {
        imageData: null
    }
    getMessage(e) {
        this.setData({
            imageData: e.detail.data[0].imgData
        })
    }
})

3. 保存图片到相册(在小程序里)

base64

getFileSystemManager的writeFile写入的base64是不包含图片的头字节的。所以要干掉data:image/jpeg;base64,等字符

有了文件路径就可以保存到相册了

没有接收到?不是实时触发?

h5postMessagewebviewpostMessagewebview
getMessage: function(e) {
    if (e.type === 'message' && e.detail && e.detail.data && e.detail.data.length > 0) {
        e.detail.data.forEach(function(dataItem) {
            if (dataItem.type === 'qbreport' && dataItem.key) {
                // todo: yourFn(dataItem.key)
            }
        })
    }
}

所以,我们在执行保存的时候可以立马触发它的返回事件。

function() {
    // 此处省略
    wx.miniProgram.postMessage({
        data: {
            xxx: 'aaa'
        }
    })
    wx.miniProgram.navigateBack({
        delta: 1
    }) //注意这里.
}

完整的代码如下:

html

webchat webview save image

小程序端代码:

其它相关

保存远程图片

  wx.showLoading({
      title: "正在下载图片... ",
      mask: !1
  })
wx.downloadFile({
  url: '填写一个远程的图片链接',
  success: function(t) {
wx.showLoading({
          title: "正在保存图片",
          mask: !1
      })
      wx.saveImageToPhotosAlbum({
          filePath: t.tempFilePath,
          success: function() {
              wx.showModal({
                  title: "自定义提示信息",
                  content: "保存成功",
                  showCancel: !1
              });
          },
          fail: function(t) {
              wx.showModal({
                  title: "图片保存失败",
                  content: t.errMsg,
                  showCancel: !1
              });
          },
          complete: function(t) {
              wx.hideLoading();
          }
      });
},
  fail: function(t) {
      wx.showModal({
          title: "图片下载失败",
          content: t.errMsg,
          showCancel: !1
      });
  },
  complete: function(t) {
      wx.hideLoading();
  }
  }))

推荐学习:SVG视频教程

  • 上一篇:微信小程序 锚点定位案例
  • 下一篇:小程序 image src动态路径
  • 版权备注
    最新资讯
    2023-12-08
    微信小程序开发常见问题解答
    (2)选择模板的方式去开发微信小程序,它的开发流程就比较简化,这种开发方式的流程相对简单,当然整个流···
    2023-12-08
    《课题中期报告》PPT模板下载
    《课题中期报告》PPT模板 43页1MB 本文档由 “ 格嫒 ” 提供并上传2021-09-01 ···
    2023-12-08
    蛋糕商家如何为小程序疯狂吸粉,成为人气店铺,诀窍都在这了!
    互联网时代很多蛋糕甜品商家都将视线转向了小程序,临漳县的王先生也是其中之一,他在搭建小程序后,运用五···
    2023-12-08
    微信小程序申请注册会员
    微信小程序是指在微信内部运行的小型应用程序,用户可以通过微信扫描二维码或者搜索小程序名称进入应用程序···
    2023-12-08
    🍉小程序优惠券引流实操
    🍉小程序运营推广引流-优惠券实战篇之前讲了很多小程序推广引流的方法这些方法都只是方向,没经验实操教难···
    随机资讯
    2023-08-17
    快手挂小程序需要什么条件才能开通?快手如何挂小程序赚钱
    在快手,现在大家发布视频的时候,其实都可以在自己的视频里面挂小黄车带带货或者是挂小程序的链接,这些都···
    2023-09-03
    游戏小程序开发商排名
    专业小程序开发商排名/商标小程序是什么/北京蓝开发公司分为两种,一种是平台式模板公司,一种是定制开发···
    2023-09-18
    教师好物 | 一款在家长、班级群疯传的免费小程序,快速管理、分析成绩
    自从李老师在微信建立班级群、家长群之后,总能听到一些来自家长的抱怨: “您刚发的通知,一会儿就被家长···
    2023-08-28
    家政服务上门小程序开发|上门家政小程序源码
    随着现代生活节奏的加快和工作压力的增大,越来越多的家庭开始依赖家政服务来解决日常生活中的烦琐事务。而···
    2023-08-13
    分享75个商务商城PHP源码,总有一款适合你
    商务商城 分享75个商务商城PHP源码,总有一款适合你 源码链接:https://pan.baidu···
    友情链接: 南京网站建设 南京小程序开发 北京网站建设 网站仿制 深圳小程序开发