小程序画布合成二维码海报图,并保存到相册

article/2025/8/22 0:55:45

小程序画布合成二维码海报图,并保存到相册

实现效果如下图:
在这里插入图片描述

步骤分析

1,先获取需要合成的海报和二维码。
2,获取图片的本地路径,如果图片不是网络连接则不需要此操作。
3,通过手机型号,根据屏幕的大小计算出海报的长宽比例,适配不同的手机。
4,操作小程序cavnas把二维码和海报,合成一张图。

设置好wxml页面

<button bindtap="canvasCode">海报合成</button>
<view class="haibao" style="width:100%;"><canvas class="canvas" canvas-id="codereport"  style="width:100%;height:{{ reportHeight }}px" bindtap="closeImg"></canvas><button class="savecanvas" data-url="{{ temporarycodeUrl }}" bindtap='saveImg'>保存图片</button>
</view>

实现效果逻辑代码

这里获取的海报图和二维码图片以网络链接为例子,手机型号以iphone 6s为标准做适配
微信内置接口wx.getImageInfo({})用来获取图片信息并获取图片的本地路径
wx.createCanvasContext创建画布,绘制上下文

需要注意的是:在自定义组件下,当前组件实例的this,表示在这个自定义组件下查找拥有 canvas-id 的 canvas ,如果省略则不在任何自定义组件内查找

一,绘制二维码海报

  canvasCode() {wx.showLoading({title: '生成二维码中',mask: true})let that = thislet modal = wx.getSystemInfoSync();          // 获取手机信号以iphone 6s为例let width = modal.windowWidth                // 获取手机屏幕的宽度// 根据手机屏幕比例计算出画布的高度let height = modal.windowWidth * 16 / 9      // 这里的手机屏幕比例我以16:9为例                 let scale = modal.windowWidth / 375that.setData({maskshow: true,            // 显示装载海报的容器reportHeight: height       // 设置二维码海报的高度})const ctx = wx.createCanvasContext('codereport', this)  // 创建画布// 生成海报图wx.getImageInfo({src: that.data.bgimg,                              // 海报图的网络路径success: function (res) {let path = res.path                              // 获取海报图的本地路径ctx.drawImage(path, 0, 0, width, height)         // 将海报绘制进画布 top为0,left为0,设置海报的宽高let codewidth = modal.windowWidth * 0.2          // 设置二维码宽度let codeheight = codewidth						 // 设置二维码高度	let top = height * 0.83							 // 设置二维码在海报里的向上偏移量let left = modal.windowWidth * 0.15              // 设置二维码在海报里的向左偏移量setTimeout(function () {// 二维码图wx.getImageInfo({src: that.data.codeimg,                      // 二维码的网络路径success: function (res) {                    let code = res.path                        // 获取二维码的本地路径ctx.drawImage(code, left, top, codewidth, codeheight)    // 将二维码绘制进画布 top为0,left为0,设置海报的宽高    ctx.draw(that)                             // 把绘制好的图形画进canvaswx.hideLoading()wx.canvasToTempFilePath({					// 把当前画布指定区域的内容导出生成指定大小的图片,并返回文件路径									canvasId: 'codereport',success: function (res) {let tempFilePath = res.tempFilePath;that.setData({temporarycodeUrl: tempFilePath})console.log(that.data.temporarycodeUrl)},fail: function (res) {console.log(res);}});}})}, 0)}})}

二,保存绘制好的海报到相册中

使用微信内置Api的wx.saveImageToPhotosAlbum({})保存图片到系统相册。使用之前必须先对手机相册授权

  saveImg(e){let that = this;let url = e.currentTarget.dataset.url;      // 获取海报的文件路径setTimeout(function () {wx.showLoading({title: '保存中',})}, 0) wx.saveImageToPhotosAlbum({filePath: url,        //图片文件路径success(res) {console.log(res);setTimeout(function () {wx.hideLoading()}, 400)setTimeout(function () {wx.showToast({title: '已保存到相册',icon: 'success',duration: 1500})}, 0)that.setData({maskshow: false,})wx.showTabBar({})},fail(res) {               // 保存到本地失败,弹出相册授权框console.log(res);setTimeout(function () {wx.hideLoading()}, 400)if (err.errMsg === "saveImageToPhotosAlbum:fail:auth denied" || err.errMsg === "saveImageToPhotosAlbum:fail auth deny") {console.log("打开设置窗口");setTimeout(function(){wx.openSetting({success(settingdata) {console.log(settingdata)        if (settingdata.authSetting["scope.writePhotosAlbum"]) {     // 授权成功setTimeout(function(){wx.showToast({title: '再次长按保存',icon: 'none',duration: 1500})},0)} else {console.log("获取权限失败")}}})}, 0)}}});},

http://chatgpt.dhexx.cn/article/ycXawVWU.shtml

相关文章

拿来就用的Java海报生成器ImageCombiner(一)

背景 如果您是UI美工大师或者PS大牛&#xff0c;那本文一定不适合你&#xff1b;如果当您需要自己做一张海报时&#xff0c;可以立马有小伙伴帮您实现&#xff0c;那本文大概率也不适合你。但是&#xff0c;如果你跟我一样&#xff0c;遇上到以下场景&#xff0c;最近公司上了不…

ps海报合成教程_怎样合成创意环保海报图片的PS教程

效果图合成的非常不错&#xff0c;作者用虚实结合的方法来表现主题。创作的时候先构思好想要的画面&#xff0c;然后搜集相关素材(没有的素材可以想办法自己拍摄)&#xff0c;然后按自己思路溶图&#xff0c;润色即可。最终效果 一、拖入原素材&#xff0c;素材大家可以在网络上…

如何制作动态海报?教你一招在线合成GIF海报

相信大家在网上都见过静态海报吧&#xff01;那么&#xff0c;当我们想要将静态的海报制作成炫目的动态海报来吸引大众的目光的时候&#xff0c;应该如何在线制作GIF动态海报呢&#xff1f;这时候&#xff0c;大家就可以使用**gif制作**工具&#xff0c;上传图片一键就可以在线…

设计素材|这些创意海报合成,你会发现创意比技术更重要!

是不是各位也同样收到过这样的话&#xff1a;“这次的海报还是缺点创意啊”、“再改改&#xff0c;润润色”&#xff1b; 想创意熬了三天&#xff0c;海报改了无数版&#xff0c;结果领导还是不满意。 随着设计行业竞争的日益激烈 公司对设计师的水平要求越来越高 如果你是…

怎样合成gif海报?手把手教你一键制作动态海报

相信不少新媒体小编们&#xff0c;在工作中会遇到需要自己设计海报的情况。如果是设计一般的静态海报使用一些修图软件就可以制作&#xff0c;但是当我们需要将这些静态海报变成gif动图海报的时候&#xff0c;应该如何制作gif动态图片海报呢&#xff1f;接下来&#xff0c;小编…

PHP使用Grafika合成图片,生成海报图

需求背景&#xff1a; 在小程序上生成海报图&#xff0c;但在保存图片时&#xff0c;只能保存其中的小程序码图片&#xff0c;保存下来的图片过于单调&#xff0c;且无法确认该图片的作用性&#xff0c;所以需要调整为保存一整张海报图。 海报效果图&#xff1a; 需求分析&a…

合成海报的小程序插件-票圈海报

概述 票圈海报 是一个用于生成海报的小程序插件&#xff0c;通过灵活简单的配置(JSON)就可以生成精美的分享海报&#xff0c;适用于小程序的朋友圈分享等营销裂变场景。 可以绘制文字、图片、线条、色块到海报画布&#xff0c;支持设置宽高、透明度、层级甚至圆角等属性。 亮…

PHP 海报二维码合成

组合参数方法&#xff1a; /*** [user_qrcode 参数组合]* param [type] $bgImg [背景图]* param [type] $codeImg [二维码]* param string $name [名称]* param string $remask [备注]* param string $content [描述]* param integer $key [生成二维码名称…

vue两张图片合成一张(海报二维码合成工具)

公司要经常换海报&#xff0c;一个海报要不同的二维码&#xff0c;做一个工具解决一下。 效果图如下 二维码图片的位置和海报大小可以随意调整 直接放代码&#xff1a; <template><div class"all-tool"><div :style"bgStyle" class"…

【Web技术】961- 3分钟搞定海报合成

背景 在推广业务中&#xff0c;常常会遇到合成带二维码海报分享功能&#xff0c;并且为了推广力度&#xff0c;需要同时在APP、WEB、小程序都有此功能加大曝光&#xff0c;各端都需要单独编写&#xff0c;复用能力差&#xff0c;效率低。本身合成海报业务并无难度&#xff0c;在…

如何合成动态海报?手把手教你一键在线合成gif海报

相信大家在平时都见过那种gif动态海报图片吧&#xff01;是不是觉得只有专业的设计师才能制作呢&#xff1f;其实&#xff0c;这种gif动态海报制作起来非常的简单&#xff0c;只需要准备几张图片尺寸相同图文内容不同的图片&#xff0c;再使用**在线动画制作**工具&#xff0c;…

波束形成MATLAB代码

常规的波束形成方法 clc; clear; close all;fs 1000; c 150; N 128; f 100; lambda c / f; d 0.5 * lambda; theta 1: 1: 180; t (0:1:1000-1) / fs;A zeros(1, length(theta)); A(5) 5; A(20) 4; A(25) 5; A(50) 3; % 在这四个方向上有目标 S zeros(length(th…

相移波束形成算法的MATLAB仿真

仿真结果如下&#xff1a; 部分核心程序如下所示&#xff1a; %************************************************************************** % 相移波束形成算法 %************************************************************************** %…

【波束形成】MMSE波束形成,自适应MMSE波束形成以及自适应MBER波束形成

1.软件版本 matlab2013b 2.本算法理论知识 3.部分源码 clc; clear; close all; warning off;SNR_set [0:1:12]; BER 1; nRx 10; nTx 10; frame_length 1000; Bers []; %论文table 2 alpha [0,10,-15,30,-45,50,60,-5…

基于FPGA的波束形成verilog开发

目录 一、理论基础 二、核心程序 三、仿真测试结果 一、理论基础 根据原理可知&#xff0c;整个波束形成的基本结构框图如下图所示&#xff1a; 这里&#xff0c;我们使用的加权函数为&#xff1a; 这个模块&#xff0c;相当于上述结构的&#xff1a; 二、核心程序 timesca…

鲁棒自适应波束形成

鲁棒自适应波束形成 本文是我关于Microphone Arrays Signal Processing Techniques and Applications第五章的整理。 自适应形成其方向性的波束形成器称为自适应波束形成器。它同时进行波束控制和零位控制。然而&#xff0c;在大多数声波束形成器中&#xff0c;只有在目标DOA是…

窄带波束形成——时域与频域常规窄带波束形成

最近学习了一下《最优阵列处理技术》&#xff0c;应老师要求写一个线性均匀水听器阵列的常规波束形成&#xff0c;由于是初学者&#xff0c;写的可能会有点问题&#xff0c;欢迎大家提出修改建议和指导&#xff0c;写这个主要是记录自己的思考&#xff0c;其次是和初学者进行交…

麦克风阵列波束形成

原文转载于&#xff1a;http://blog.csdn.net/shichaog/article/details/74143427 有所修改 感谢作者 波束形成 beamforming 体现的是声源信号的空域选择性&#xff0c;许多传统波束形成方法具有线性处理结构&#xff1b; 波束形成需要考虑三个方面&#xff1a; 1.麦克风…

LMS波束形成

LMS自适应波束形成器 % 标量阵最小均方准则(LMS)自适应波束形成器(ADBF) close all; Sound_velocity1200; %声速 Frequency300; %信号频率 Sample_Frequency100Frequency; %采样频率 Array_num16; %阵元数 Array_distance1/2(Sound_velocity/Frequency); %阵元间距 Signal_Leng…

波束形成(最大信噪比准则、LCMV、MSC、LMS、RLS)

波束形成&#xff08;最大信噪比准则、LCMV、MSC、LMS、RLS&#xff09; 波束形成的基本概念 # 波束形成准则 分别对上面所阐述的最大信噪比准则&#xff0c;旁瓣对消器&#xff0c;线性最小均方误差&#xff0c;以及自适应LMS和RLS算法进行仿真。 最大信噪比准则&…