返回顶部
首页 > 资讯 > 精选 >微信小程序canvas图片及文本适配的方法
  • 286
分享到

微信小程序canvas图片及文本适配的方法

2023-06-26 08:06:53 286人浏览 薄情痞子
摘要

这篇文章主要介绍了微信小程序canvas图片及文本适配的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序canvas图片及文本适配的方法文章都会有所收获,下面我们一起来看看吧。场景需求小程序目前不支

这篇文章主要介绍了微信小程序canvas图片及文本适配的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序canvas图片及文本适配的方法文章都会有所收获,下面我们一起来看看吧。

场景需求

小程序目前不支持直接分享到朋友圈,所以对于有分享到朋友圈的需求,一般是生成一张图片,例如,生成一张带有小程序码的图片,用户可以将这张图片保存到手机本地,然后将这张图片分享到朋友圈。这张图片需要使用canvas画出来。

今天我们不讲怎么生成码,这个一般是后端封装一个api前端通过调用API得到一个小程序码的url,通过image去画到canvas上,跟在canvas上画一个image是一样的逻辑。这篇文章主要是讲怎么在canvas上适配图片和文字,也就是怎么将图片和文本画到canvas上的正确的位置,能在不同的手机上都能正确的展示。

效果图展示(以下图片是在微信开发工具中显示的) 
这里演示的Demo是: 
“选择图片”button选择一张图片,可以居中显示在以下图中的黄色区域,即canvas中,并在canvas的顶部居中展示文本“你若盛开,蝴蝶自来”。

代码说明

wxml

<button bindtap="chooseImg">选择图片</button><view class="canvas-box"><canvas class="canvas" canvas-id="shareCanvas" bindlongtap="saveShareImage"></canvas></view>

$3. sCSS(wxss)  这里我用的是scss去写样式代码,在WEBStORM中可以通过配置,将scss解析成wxss,至于具体怎么配置,可以自行百度。  PS1:这里定义了一个scss rpx function,是因为在webStrom中格式化代码的时候会将数字和单位rpx中间添加一个空格,导致编译报错,所以用一个function去处理  PS2:样式说明(设计稿是基于iphone6视觉稿标准):  button宽高:700rpx * 92rpx (350px * 46px)  包裹canvas的容器的view(.canvas-box)position:fixed,占据除顶部button的高度之外,填满剩余全部空间,canvas居中显示,宽高:700rpx, 100%

@function rpx($value) {@return $value*1rpx;} page {background-color: #fff6f6;button {width: rpx(700);height: rpx(92);background-color: #ffddab !important;}.canvas-box {position: fixed;top: rpx(92);left: 0;right: 0;bottom: 0;canvas {position: absolute;width: rpx(700);height: 100%;top: 50%;left: 50%;transform: translate(-50%, -50%);}}}$4. js  1、在data中定义三个变量
data: {windowWidth: 0, // 可使用窗口宽度windowHeight: 0, // 可使用窗口高度ratio: 0 // 根据尺寸动态计算 1px换算成多少rpx}

2、通过wx.getSystemInfo获得系统信息,并且计算ratio

onReady: function (e) {// 获取系统信息wx.getSystemInfo({success: res => {console.log(res);this.setData({windowWidth: res.windowWidth,windowHeight: res.windowHeight,});this.setData({// 屏幕宽度 375px = 750rpx,1px=2rpx// 1px = (750 / 屏幕宽度)rpx;// 1rpx = (屏幕宽度 / 750)px;ratio: 750 / this.data.windowWidth});}});},

3、button的触发事件chooseImg,通过wx.chooseImage选择图片,通过wx.getImageInfo获取选择的图片的大小

chooseImg: function () {wx.chooseImage({count: 1,success: res => {let imgUrl = res.tempFilePaths[0];// 获取图片大小wx.getImageInfo({src: imgUrl,success: data => {let imgWidth = data.width;let imgHeight = data.height; // 创建canvas,根据选择的图片大小,在canvas上绘制图片和文字this.createCanvasshareImage(imgUrl, imgWidth, imgHeight);}});}});}

4、创建canvas并在canvas上添加图片和文本

createCanvasShareImage: function (imgUrl, imgW, imgH) {// 使用wx.createCanvasContext获取绘图上下文 contextlet context = wx.createCanvasContext('shareCanvas');console.log('context: ', context); // 获取canvas的宽度:// 750的设计稿基于iphone6的尺寸(屏幕宽度: 375px)在小程序中的比例是: 1px = 2rpx ==> 375px = 750rpx ==> 屏幕宽度(px) = 750rpx// 所以 1rpx = 屏幕宽度 / 750// 我们这里css中设置的 canvas 的width:700rpx, 所以 canvas的宽度计算是: [(屏幕宽度 / 750)* 700]rpx, 这样就可以做到在不同手机上都可以适配let canvasWidthPx = 700 / this.data.ratio; // 设置 canvas 的背景并填充canvascontext.fillStyle = '#ffdc22';context.fillRect(0, 0, canvasWidthPx, this.data.windowHeight); // 绘制图片:图片居中显示在 canvas 中let imgX = (700 - imgW) / 2;let imgY = (this.data.windowHeight * this.data.ratio - 46 * this.data.ratio - imgH) / 2;let clipWidth = imgW * this.data.ratio;let clipHeight = imgH * this.data.ratio;context.drawImage(imgUrl, -imgX, -imgY, clipWidth, clipHeight, 0, 0, imgW, imgH); // 设置字体大小、文本颜色context.setFontSize(20);context.fillStyle = "#000"; // 计算文本的宽度:measureText() 取到文本的 widthlet txtWidth = context.measureText('你若盛开,蝴蝶自来').width; // 绘制居中文本:这个地方的 (x, y)的坐标是在文本的左下角位置context.fillText("你若盛开,蝴蝶自来", (canvasWidthPx - txtWidth) / 2, 20 * this.data.ratio); context.draw();}

5、长按bindlongtapcanva保存图片或者直接预览图片,先通过wx.canvasToTempFilePath将当前画布指定区域的内容导出生成指定大小的的图片,再通过wx.saveImageToPhotosAlbum将图片保存到本地,或者通过wx.previewImage直接预览图片。

saveShareImage() {wx.canvasToTempFilePath({canvasId: 'shareCanvas',success: (res) => {console.log('canvasToTempFilePath: ', res);// 将图片保存到相册wx.saveImageToPhotosAlbum({filePath: res.tempFilePath,success: (data) => {console.log(data);}}); // 直接预览图片wx.previewImage({urls: [res.tempFilePath]})}})}

关于“微信小程序canvas图片及文本适配的方法”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“微信小程序canvas图片及文本适配的方法”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: 微信小程序canvas图片及文本适配的方法

本文链接: https://lsjlt.com/news/308046.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 微信小程序canvas图片及文本适配的方法
    这篇文章主要介绍了微信小程序canvas图片及文本适配的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序canvas图片及文本适配的方法文章都会有所收获,下面我们一起来看看吧。场景需求小程序目前不支...
    99+
    2023-06-26
  • 微信小程序加载本地图片的方法
    微信小程序加载本地图片的方法:1、在微信开发工具中打开项目。2、新建一个文件夹并将图片放到这个目录下。3、用style样式的方式或image标签的相对路径去访问图片,实现加载本地图片。具体操作步骤:首先,打开微信开发工具,再打开项目。如下图...
    99+
    2024-04-02
  • 微信小程序图片文件预览的方法
    这篇文章主要介绍“微信小程序图片文件预览的方法”,在日常操作中,相信很多人在微信小程序图片文件预览的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序图片文件预览的方法”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-26
  • 微信小程序图片的保存方法
    微信小程序图片的保存方法:1、下载文件资源到本地。2、保存图片。具体操作步骤:下载文件资源到本地:客户端直接发起一个 http get 请求,返回文件的本地临时路径。即:调用函数wx.downloadfile({})保存图片到系统相册。即:...
    99+
    2024-04-02
  • 微信小程序图片转base64的方法
    微信小程序图片转base64的方法 :1、新建小程序,将图片拷贝到目录。2,直接用readFileSync进行编码转化。3,运行以后图片就转成base64。具体操作步骤:首先新建小程序并把图片拷贝到目录,如下图所示:然后用readFileS...
    99+
    2024-04-02
  • 微信小程序API绘图导出图片的方法
    这篇文章主要介绍“微信小程序API绘图导出图片的方法”,在日常操作中,相信很多人在微信小程序API绘图导出图片的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序API绘图导出图片的方法”的疑惑有所...
    99+
    2023-06-26
  • 微信小程序如何实现图片自适应
    这篇文章主要介绍了微信小程序如何实现图片自适应,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。首先我们来看看图片组件给的一些说明:属性名类型默...
    99+
    2024-04-02
  • 微信小程序实现轮播图(适配机型)
    本文实例为大家分享了微信小程序实现轮播图的具体代码,供大家参考,具体内容如下 1、wxss样式: .showTableBox {     position: relative;  ...
    99+
    2024-04-02
  • 微信小程序图片压缩功能的实现方法
    微信小程序图片压缩功能的实现方法 :1、在 wx.chooseImage 接口选择相机图片。2、在 wx.getImageInfo 接口获取图片信息。3、计算压缩比例和最终图片的长宽。4、创建 canvas 绘制最终图片。5、在 wx.ca...
    99+
    2024-04-02
  • 微信小程序图片上传功能的实现方法
    目录前言首先是静态布局和样式部分下面是js的部分,我已详细备注~~~总结前言 最近做了个小程序,涉及到了图片上传的功能,今天给大家详细介绍下如何实现小程序图片上传,话不多说先上代码 ...
    99+
    2024-04-02
  • 微信小程序图片自适应支持多图的示例分析
    这篇文章将为大家详细讲解有关微信小程序图片自适应支持多图的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。微信小程序图片自适应支持多图实例详解微信小程序图片自适应,...
    99+
    2024-04-02
  • uniapp解析富文本(包含图片)微信小程序+app可用
     最终效果图: uniapp中,在需要使用的vue界面中 {{title}} export default {data() {return {id:'',title:'',content:'',flag:0}},methods: {get...
    99+
    2023-09-12
    php vue.js 小程序
  • 微信小程序开发设置默认图片、错误加载图片的方法
    本文小编为大家详细介绍“微信小程序开发设置默认图片、错误加载图片的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信小程序开发设置默认图片、错误加载图片的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。w...
    99+
    2023-06-26
  • 微信小程序配置视图层数据绑定的方法
    本篇内容介绍了“微信小程序配置视图层数据绑定的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、小程序结构目录小程序框架的目标是通过尽可...
    99+
    2023-06-30
  • 微信小程序中,图片的位置设置
    在编写小程序的时候,难免会涉及到图片的位置放置。 以及具体的wxss格式的设置,在这里想进行一个具体格式的讲解。 第一种:图片不换行,多个图片排列在同一行 具体样例如下图:黄色荧光笔所绘:  要实现该操作,根据图易见,其是由图片,以...
    99+
    2023-09-04
    微信小程序 小程序 学习
  • 微信小程序怎么使用图片轮播及滚动视图
    这篇“微信小程序怎么使用图片轮播及滚动视图”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“微信小程序怎么使用图片轮播及滚动视图”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接...
    99+
    2023-06-26
  • 微信小程序如何实现swiper轮播图中的图片自适应高度
    这篇文章给大家分享的是有关微信小程序如何实现swiper轮播图中的图片自适应高度的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。小程序中的轮播图很简单,官方都有例子的,但是唯一的缺...
    99+
    2024-04-02
  • 微信小程序实现多文件或者图片上传
    本文实例为大家分享了微信小程序实现多文件或者图片上传的具体代码,供大家参考,具体内容如下 html <view class="list1">     <view c...
    99+
    2024-04-02
  • 微信小程序中引入echart图表的方法
    这篇文章给大家分享的是有关微信小程序中引入echart图表的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。正文:准备:小程序开发环境,下载ECharts组件,gitHub地址:https://github.c...
    99+
    2023-06-08
  • 微信小程序实现上传图片的功能
    本文实例为大家分享了微信小程序实现上传图片的具体代码,供大家参考,具体内容如下 效果图 WXML <view class="img-wrap"> <vie...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作