当前位置: 首页 > article >正文

微信小程序海报

记录一下微信小程序使用 Skyline 渲染引擎生成页面海报的流程。

1、单独给页面开启 Skyline 渲染引擎,在 app.json 增加如下配置:

{
  "lazyCodeLoading": "requiredComponents",
  "rendererOptions": {
    "skyline": {
      "disableABTest": true,
      "sdkVersionBegin": "3.0.1",
      "sdkVersionEnd": "15.255.255"
    }
  }
}

2、在页面的配置文件中增加如下配置:

{
  "usingComponents": {},
  "renderer": "skyline",
  "navigationStyle": "custom",
  "componentFramework": "glass-easel",
}

3、在 wxml 文件中使用 snapshot 组件包裹要生成海报的 view

<snapshot id="poster" mode="view">
  <view class="poster">
    ...
  </view>
</snapshot>

4、生成海报图片

this.createSelectorQuery().select("#poster")
    .node()
    .exec(res => {
      const node = res[0].node
      node.takeSnapshot({
        type: 'file',
        format: 'png',
        success: (res) => {
          this.saveImageToLocal(res.tempFilePath);
        },
        fail(res) {
          console.log('保存失败', res);
        }
      })
})

5、海报图片保存到本地

  saveImageToLocal(tempFilePath) {
    wx.saveImageToPhotosAlbum({
      filePath: tempFilePath,
      success: (res) => {
        wx.showToast({
          title: '保存成功',
          icon: 'success'
        });
      },
      fail: (err) => {
        console.log('err', err);
        if (err.errMsg === "saveImageToPhotosAlbum:fail auth deny") {
          // 用户拒绝了权限
          wx.showModal({
            title: '提示',
            content: '您已拒绝保存图片,请手动开启相册权限',
            showCancel: false,
            confirmText: '去设置',
            success: (res) => {
              if (res.confirm) {
                wx.openSetting();
              }
            }
          });
        } else {
          wx.showToast({
            title: '保存失败',
            icon: 'none'
          });
        }
      }
    });
  }

注意:

1、如果页面使用了第三方组件库会出现样式错乱问题;

2、PC端的小程序开发者工具目前只支持 webview 渲染,不支持 Skyline 渲染;

3、Skyline 渲染默认使用Flex布局,flex-direction 默认是 column;


http://www.kler.cn/a/376883.html

相关文章:

  • Git最便捷的迁移方式
  • 个人博客搭建(二)—Typora+PicGo+OSS
  • spring boot 集成 knife4j
  • 如何使用进度条来显示QFle读取文件进度
  • C++和Python中负数取余结果的区别
  • 将txt转成excel正则化公式的调整
  • 清晰易懂的JavaScript进阶部分——DOM操作 (节点获取,节点属性修改,节点创建与插入,CSS样式的修改)
  • 前端笔试新问题总结
  • 微服务设计模式 — 补偿事务模式(Compensating Transaction Pattern)
  • 实战经验:成功的DevOps实施案例解析
  • 【element ui系列】分享几种实现el-table表格单选的方法
  • Redis数据结构:List类型全面解析
  • VScode设置系统界面字体
  • 网络工程师的瑞士军刀:深度解析20+常用工具
  • el-table 多选默认选中(根据返回的id给数据加默认选中状态)
  • 【机器学习】嘿马机器学习(科学计算库)第4篇:Matplotlib,学习目标【附代码文档】
  • Java | Leetcode Java题解之第525题连续数组
  • Linux练习作业
  • 【网络面试篇】HTTP(1)(笔记)——状态码、字段、GET、POST、缓存
  • 用了queryselectall获取了所有div,是伪数组,什么是伪数组,如何将伪数组转换成真正数组,然后用filter进行一次和二次过滤
  • 启纬科技发布6色无源电子纸手机壳InkaceE6
  • 00-开发环境 MPLAB IDE 配置
  • 手机无线/有线投屏电脑方案
  • 《 C++ 修炼全景指南:十八 》缓存系统的技术奥秘:LRU 原理、代码实现与未来趋势
  • PHP如何实现表单与数据安全
  • Nature|用于无线监测颅内信号的植入式柔性超声波传感器(柔性传感/健康监测/植入式电子/水凝胶)