小程序canvas api生成分享海报图 解决方案

微信小程序 api+前端实现生成分享海报 微信小程序生成分享海报 阅读详情

先上效果图

分享图片携带参数:


回归到代码

实际上使用了小程序提供的绘图api,文档在此 小程序画布canvas API,其他还有getImageInfo和saveImageToPhotosAlbum等。

在wxml准备好一个画布,给定一个画布id,宽高见js部分。

<!-- 生成图片的画布 -->
  <canvas class='firstCanvas' 
          style="width:{{windowWidth}}px;height:{{windowHeight}}px;box-shadow: 1px 1px 5px 5px rgba(0, 0, 0, 0.05);" 
          canvas-id="firstCanvas">
</canvas>
<!-- 按钮 -->
<button bindtap='buildPosterSaveAlbum'>生成海报</button>

page对象中获取设备屏幕宽高用于画布组件。

data: {
    // 屏幕可用宽高
    windowWidth: wx.getSystemInfoSync().windowWidth,
    windowHeight: wx.getSystemInfoSync().screenHeight,
    // 图片预览本地文件路径
    previewImageUrl: null
  },

编写promise处理获取图片信息,请求参数二维码图片等等;

  buildPosterSaveAlbum: function() {
    let that = this;
    wx.showLoading({
      title: '图片生成中',
    })

    // 获取图1信息
    // tip 貌似本地静态文件路径不能作为画布的src参数,网络图片无影响。
    let promise1 = new Promise(function(resolve, reject) {
      wx.getImageInfo({
        src: 'xxx1.png',
        success: function(res) {
          resolve(res);
        },
        fail: function(res) {
          reject(res)
        }
      })
    });

    // 获取图2信息
    let promise2 = new Promise(function(resolve, reject) {
      wx.getImageInfo({
        src: 'xxx2.png',
        success: function(res) {
          resolve(res);
        },
        fail: function(res) {
          reject(res)
        }
      })
    });

    // 执行
    Promise.all(
      [promise1, promise2]
    ).then(res => {

      // 获取宽高
      let wW = that.data.windowWidth;
      let wH = that.data.windowHeight;

      // 定义画布上下文常量
      const ctx = wx.createCanvasContext('firstCanvas');

      //背景白色
      ctx.setFillStyle('white');
      //从x=0,y=0开始绘制白色
      ctx.fillRect(0, 0, wW, wH);

      /* 绘制图像到画布  图片的位置你自己计算好就行 参数的含义看文档 */
      //图1
      ctx.drawImage(res[0].path, wW * 0.05, wW * 0.2, wW * 0.9, wW * 0.9);
      //图2
      ctx.drawImage(res[1].path, wW * 0.05, wW * 0.05, wW * 0.1, wW * 0.1);
      /* 绘制文字 位置自己计算 参数自己看文档 */
      ctx.setFillStyle('#000000');
      ctx.setFontSize(15);

      let str = '目标文字';
      // 绘制文字
      ctx.fillText(str, wW * 0.05, wW * 1.17)

      /*保存上下文 绘制 */
      // ctx.save();
      ctx.draw();

      //destWidth值越大图片越清晰/大小成正比 解决画布模糊的问题
      //详细的参数见画布文档
      wx.canvasToTempFilePath({
        canvasId: 'firstCanvas',
        width: wW,
        height: wH,
        destWidth: wW * 3,
        destHeight: wH * 3,
        quality: 1,
        success: function success(res) {
          console.log('转图片结果');
          // 关闭loading
          wx.hideLoading();
          // 到page对象的data中
          that.setData({
            previewImageUrl: res.tempFilePath
          })

          //可写成函数调用 这里不做解释
          wx.saveImageToPhotosAlbum({
            filePath: that.data.previewImageUrl,
            success(res) {
              //保存成功
              console.log(res);
            },
            fail: function(res) {
              wx.showToast({
                icon: 'fail',
                title: 'sorry 保存失败,请稍后再试',
              })
              return;
            }
          })
        },
        complete: function complete(e) {
          console.log(e.errMsg);
        }
      });
    }).
    catch(err => {
      //error 错误处理
    })
  }

大功告成,不算太麻烦。

tips:需要生成带参数的二维码需要请求微信的api,返回二进制流的图片格式在服务端存为图片之后返回给小程序。

可用python,java或者node处理图片即可。

扫码体验小程序

 

uniapp生成商品分享海报 uniapp用canvas生成一个分享商品的海报 文章目录前言一、展示效果二、使用步骤1.HTML部分2.CSS部分3.JS部分总结 前言 uniapp用canvas生成一个分享商品的海报,因为用到了uni.downloadFile这个API,所以要注意图片在H5端跨域的问题。 以下是本篇文章正文内容 一、展示效果 大致效果就是这样,点击生成海报的按钮,会用canvas生成一张海报,长按可以保存到手机上。 二、使用步骤 1.HTML部分 代码如下: <!-- 生成海报的点击事件 -->. 阅读详情

相关推荐

利用Canvas实现小程序分享海报的生成与本地保存

利用Canvas实现小程序分享海报的生成与本地保存 文章目录利用Canvas实现小程序分享海报的生成与本地保存实现过程在组件中渲染canvas使用`getImageInfo`获取canvas的图片资源根据机型适配尺寸将canvas保存成图片其他一些坑canvas在安卓机上的绘制问题canvas的层级问题 虽然说这是个很常见的需求了,但真正实现起来才发现其中的坑是如此之多。尤其是微信小程序对于Can...

wantingtr的博客 1288

揭秘海报生成技术

1 引言随着裂变营销策略的兴起,定制化海报分享的需求不断增加。作为开发者,一张背景图+一个二维码的海报合成的需求便会出现在我们的工作中,如下图。本文给大家介绍海报生成相关知识以及使用中常见的问题。希望能够抛砖引玉,为遇到类似需求或问题的伙伴们提供参考。2 实现方式2.1 生成步骤 在用户视角,海报生成像是“截图”,点击生成海报按钮之后,定制化海报便会呈现在屏幕上,再点击保存按钮,海报便会保存在手机...

大转转FE 1478

uniapp之小程序端生成分享海报(带自定义参数的二维码)

getToken() { uni.showLoading({ title: '加载中', mask: true }) let APPID = 'wxbb79e27e89dd25ce' let APPSECRET = '9e891651373f472e7e73948f6ba06a11' uni.request({ url: `https://api.weixin.qq.co.

Jocelyn_书 1万+

uni-app如何生成海报图片

通过uni-app生成分享图海报,进行活动分享和转发

月落星河 6478

微信小程序用canvas生成分享朋友圈的海报

在公司遇到一个需求小程序分享到朋友圈,套路就是生成小程序的二维码图片,技术思路简单点直接下载小程序二维码的图但是这么简单就不用多BB写文章分享了,复杂点就是用canvas画出一张图片效果如下。 说一下解决过程吧 1.小程序canvas画图自己一点点画需要不停的算东西而且小程序绘图API还是有点小多的对于一个刚接触的新手,功能又有时间限制的我来说无疑是崩溃的,为了不让自己被产品拿去祭天找到了一...

NB_666的博客 7410

微信小程序 - 使用canvas绘制海报实现分享功能

  今天给大家分享一下如何使用canvas绘制海报并实现分享,下面我分享一下实现的过程: 效果图: 实现过程   首先,在wxml文件中写入 canvas 标签,并设置 canvas-id,注意,canvas-id 必须要设置,不然我们无法创建 canvas 的绘图上下文 CanvasContext 对象,也无法在上面绘制我们需要的东西。 <canvas canvas-id="mycanv...

sunshime的博客 1793

fastposter v2.13.0 一分钟完成开发海报 [云服务来袭]

🔥🔥🔥 fastposter海报生成器是一款快速开发海报的工具。只需上传一张背景图,在对应的位置放上组件(文字图片二维🐴头像)即可生成海报。点击代码直接生成各种语言的调用代码,方便快速开发。现已服务众多电商类项⽬,多个项⽬有56W+⽤户,通过多年⽣产环境的考验,稳定可靠。广泛应用于各类电商、行业海报、分销系统、电商海报、电商主图等海报生成和制作场景。fastposter支持Docker部署,云服务。

thomastangweixin的专栏 446

微信小程序使用canvas画布生成二维码海报分享图片(后端给的base64格式图片转换为ArrayBuffer再生成海报)

页面效果 index.wxml <view> <view class="canvas-image-box"> <canvas canvas-id="shareCanvas" style="width:{{_width}}px;height:{{_heigth/1.423}}px;"/> </view> <!-- 文字提示 --> <view class="canvas-tip" wx:if="{{canvasTy

weixin_43569405的博客 2186

探秘FastPoster:一款高效易用的海报生成神器

![fast-poster logo](https://fastposter.net/dassets/dragonfly2x.png) 在数字化时代,无论是电商平台还是社交媒体,引人注目的海报始终是吸引眼球的关键元素。而【FastPoster】正是这样一款强大的海报生成工具,它将帮你快速、轻松地创造个性化海报,极大地提升你的设计效率。 ## 项目简介 FastPoster是一个基于Pytho...

gitblog_00721的博客 1349

【微信小程序】小程序使用canvas画布生成分享朋友圈的海报

先来张效果图吧! 思路: 利用小程序组件canvas放置一个画布,然后再利用布局吧canvas画布隐藏,让其绘制成的图片显示在我们的前端页面上面就可以了,最后在利用API将图片保存到我们手机上面就完成了。 上代码! wxml: <!-- 画布大小按需定制 这里我按照背景图的尺寸定的 --> <canvas canvas-id="shareImg" style="...

疾术客 2365

PX4无人机-Gazebo仿真实现动态目标追踪的视觉控制方案

本文详细介绍了PX4无人机在Gazebo仿真环境中实现动态目标追踪的视觉控制方案。从PX4与Gazebo仿真环境搭建、动态目标追踪核心技术栈、仿真环境深度定制技巧到追踪算法的优化实践,提供了全面的技术指导和常见问题排查方法,帮助开发者高效实现无人机视觉追踪功能。

weixin_29196315的博客 450

小程序canvas绘制生成海报

//INDEX.WXML <!-- 第一种仅仅生成二维码并展示 --> <!-- <view class='cont' id='canvas-container' > <image src='data:image/png;base64,{{codeimg}}' style='width:300rpx;height:300rpx;top:20%;posi...

菜鸟老五 7111

电源完整性仿真流程梳理

可根据仿真流程导图,一步一步的去设置完成仿真。仿真的关键,在于对电路回路的理解以及所放置的电压源与电流的合理性,对于去耦电容的选择,则需要根据谐振频率计算,从而选取有效滤波的容值。

csy17729158342的博客 3442

uniapp canvas小程序分享海报的实现

小程序中经常会有海报的生成,为了使用方便就自己封装了js文件方便调用 文件名为creatMaterialImage.js 海报图效果如下: 1,海报生成方法的具体实现 // 用canvas生成分享图片,返回src const createShareImg = function(options, that) { return new Promise(function(resolve, reje...

xiyunmengyuan的博客 5005

Android11.0系统中适配EC20模块4G及GPS功能

本文主要描述在RK3568Android11中适配EC20模块,启用4G与GPS功能。

yjz_0314的博客 2793

Dia 使用说明

简述 在linux上面能找到dia这个工具还是挺幸运的,因为之前画流程图总是使用ubuntu默认的word工具 在里面画图,感觉流程图使用起来麻烦,并且视觉效果真的不好看。 自从使用Dia后,感觉至少画起来流程图会变得越来越标准了。但是Dia也存在问题,就是使用的文档很少,使用中遇到为后,查起来比较费劲,但是至少问题不是很多,所以使用中遇到的几点问题我就记下来,和大家分享,加快大家的开发和文档整理能力。 我会按照遇到的问题来说,不存在使用的先后顺序。 1. Dia 去掉背景中的线条 首先去点那个大一点的蓝色

linan101的博客 4926

小程序海报组件WXA-Plugin-Canvas:一键生成朋友圈分享海报

在微信小程序的开发中,分享功能是提升用户活跃度和传播效果的重要手段。然而,原生的小程序Canvas API使用起来相对复杂,尤其是在生成精美的分享海报时,开发者往往需要处理大量的绘图逻辑和细节。WXA-Plugin-Canvas正是为了解决这一问题而生的开源组件,它让小程序海报生成变得简单高效。 ## 项目概述 WXA-Plugin-Canvas是一个专门为微信小程序设计的海报生成组件,通过简

gitblog_01036的博客 993

别再到处找DEM了!手把手教你免费下载90米、30米、12.5米全球高程数据(附国内网盘链接)

本文详细介绍了如何免费获取全球90米(SRTM3)、30米(ASTER GDEM)和12.5米(ALOS)高精度DEM数据,并提供了国内网盘链接以绕过国际平台访问障碍。通过对比不同数据源的特点和适用场景,帮助用户根据项目需求选择最合适的DEM数据,同时分享了数据处理和质量提升的实用技巧,实现从数据获取到应用的无缝衔接。

weixin_28725949的博客 670

小程序如何生成海报分享朋友圈

摘要: 小程序开发必备技能啊... 原文:小程序如何生成海报分享朋友圈 作者:小白 Fundebug经授权转载,版权归原作者所有。 项目需求写完有一段时间了,但是还是想回过来总结一下,一是对项目的回顾优化等,二是对坑的地方做个记录,避免以后遇到类似的问题。 需求 利用微信强大的社交能力通过小程序达到裂变的目的,拉取新用户。 生成的海报如下: 需求分析 1、利用...

大灰狼的小绵羊哥哥的博客 3655

ubuntu linux虚拟机安装部署openclaw详细教程(安装、问题处理)

本文详细介绍了在Ubuntu系统下安装OpenClaw AI助手的完整流程及常见问题解决方案。主要内容包括:1) 通过GIT、Node.js等基础环境配置;2) 使用官方脚本或源码编译两种方式安装OpenClaw;3) 配置向导中的关键选项说明;4) 针对systemctl服务启动失败等常见错误的处理方法。文章特别强调了权限管理、网络依赖和访问配置等易错环节,提供了修改service文件等具体解决方案,帮助开发者顺利完成部署并实现Web UI访问。教程实操性强,适合本地和云服务器环境部署参考。

少说,多做 2032

【AI for Medecine】吴恩达医学图像AI专项课程(诊断、预测、治疗)

近期需要简单了解AI4Science上的一些应用,看到吴恩达大佬的专项课程,于是开始来个“全面”的了解--医学人工智能(诊断、预测、治疗)。

图挖掘领域,新晋砖家 ☞ 未来可期,欢迎和静静一起学习交流吖 773

小程序canvas生成海报

小程序canvas生成海报先看看效果图 以下↓使用场景前提wxmljsdrawCanvas.js在Canvas.js引入drawCanvas.js希望大家能够用到! 如果文章中有出现纰漏、错误之处,还请看到的小伙伴多多指教,先行谢过 先看看效果图 以下↓ 使用场景 分享小程序的,绘制分享图 不同商品分享的是后生成不同的图片,每个商品的信息图片不同,小程序默认分享的是页面默认截图 小程序分享朋友圈,生成海报 前提 根据上面图片需要一个背景图片(上面是750*777),大家可根据实际情况进行改变 本文用

青春流年的博客 1884

【WorkBuddy专栏51】Codex与WorkBuddy的底层基因——两条完全不同的AI智能体路线(上)

【WorkBuddy专栏51】Codex与WorkBuddy的底层基因——两条完全不同的AI智能体路线(上)

AI人人懂 2175

微信小程序生成海报

微信小程序生成海报小程序生成海报实用的开源组件painter简单的demo引入组件在页面引入组件json文件wxml文件js文件效果展示painter视化编辑代码工具 小程序生成海报 因为公司小程序开发需要涉及到分享海报,小程序现在并没有生成海报的API,只能靠前端用canvas去设计,而对之前没有接触过canvas的人,可能会花费一定的时间去摸索canvas,而且在绘制分享图的时候难免会踩到canvas的各种坑。 设计海报主要是由于我们无法将小程序直接分享到朋友圈,但分享到朋友圈的需求又很多,业界目前的做

qq_39272523的博客 4035

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

小程序使用 canvas 制作活动分享海报的一点点细节

活动海报制作,在 C 端是很常见的功能,前端程序员应该或多或少的接触过,h5 写的话方案成熟,可以用原生 canvas api 写,也可以使用成熟的插件如等;不过在微信小程序中开发这个功能,第一次的话就会遇到挺多坑的,api 的兼容性、凌乱的文档都在暗示我们过程没那么简单;如果你也在做相关的功能,这篇博客可能会有所帮助!

weixin_t1452030的博客 1365

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
下一篇: nodejs event模块
爱开车的彬哥
博客等级 码龄10年 50粉丝 77原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值