wxml2canvas 小程序元素生成图片

这篇具有很好参考价值的文章主要介绍了wxml2canvas 小程序元素生成图片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、下载

小程序内部要安装wxml2canvas
github地址:https://github.com/liudongyun1215/wxml2canvas

1.1、初始化package.json, 下面两种代码都可以初始化package.json

npm init
yarn init

1.2、安装wxml2canvas

yarn add wxml2canvas
npm i wxml2canvas

1.3、构建npm

wxml2canvas 小程序元素生成图片

2、使用

2.1、在js页面引入

import Wxml2Canvas from 'wxml2canvas'; 

2.2、在js中使用, 需要在使用的方法中引用drawCanvas

drawCanvas: function () {
        wx.showLoading({
           title: '加载中'
        })
        const that = this
        const query = wx.createSelectorQuery().in(this);
        query.select('#answer-canvas').fields({ //answer-canvas要绘制的canvas的id
            size: true,
            scrollOffset: true
        }, data => {
            let width = data.width;
            let height = data.height;
            console.log(width, height);
            that.setData({
                width: width,
                height: height
            })
            setTimeout(() => {
                that.draw()
            }, 1500);
       }).exec()
    },
    draw(){
        let that = this
        
        //创建wxml2canvas对象
        let drawImage = new Wxml2Canvas({
          element: 'answerCanvas', // canvas节点的id,
          obj: that, // 在组件中使用时,需要传入当前组件的this
          width: 696, // 宽 自定义
          height: 522, // 高 自定义
          background: 'transparent', // 默认背景色 设置背景色
          progress(percent) { // 绘制进度
            // console.log(percent);
          },
          finish(url) {
            console.log("创建的图片", url);
            wx.hideLoading()
            that.setData({
                imgUrl: url
            })
          },
          error(res) {
            console.log(res);
            // uni.hideLoading()
            // 画失败的原因
          }
        }, this);
        let data = {
          //直接获取wxml数据
          list: [{
              type: 'wxml',
              class: '.answer_canvas .answer_draw_canvas',  // answer_canvas这边为要绘制的wxml元素跟元素类名, answer_draw_canvas要绘制的元素的类名(所有要绘制的元素都要添加该类名)
              limit: '.answer_canvas', // 这边为要绘制的wxml元素跟元素类名,最外面的元素
              x: 0,
              y: 0
            } ]
        }
          //传入数据,画制canvas图片
        drawImage.draw(data, this);
    }

2.3、xwml中添加元素

canvas元素添加

<canvas canvas-id="answerCanvas" class="answerCanvas"></canvas>

生成后的图片展示

<image class="canvas_img" src="{{imgUrl}}" wx:if="{{imgUrl}}" show-menu-by-longpress="{{true}}"></image>

要生成图片的html元素

 <view class="canvasImg answer_canvas " id="answer-canvas" wx:if="{{!imgUrl}}">
            <view class="inner answer_draw_canvas"  data-type="background-image">
                <image class="left_icon answer_draw_canvas" src="/images/htsi/left_icon.png" data-type="image" data-url="/images/htsi/left_icon.png"></image>
                <view class="name answer_draw_canvas" data-type="text" data-text="姓名:XXX">姓名:XXX</view>
                <view class="desc answer_draw_canvas" data-type="text" data-text="这边是要绘制的文字">这边是要绘制的文字</view>
                <view class="desc answer_draw_canvas" data-type="text" data-text="要绘制的文字描述">要绘制的文字描述</view>
                <view class="bottom answer_draw_canvas">
                    <image src="https://img0.baidu.com/it/u=753216696,2669208484&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1657299600&t=c358bbe8685325dfa573277881d24cea" alt="" class="mini answer_draw_canvas" data-type="image" data-url='https://img0.baidu.com/it/u=753216696,2669208484&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1657299600&t=c358bbe8685325dfa573277881d24cea'/>
                    <view class="left answer_draw_canvas">
                        <text class="company answer_draw_canvas" data-type="text" data-text="要绘制的文字">要绘制的文字</text>
                        <text class="time answer_draw_canvas" data-type="text" data-text="2022年03月05日">20220305</text>
                    </view>
                </view>
            </view>
           
        </view>

3、要添加元素的格式

3.1、背景图片

元素要添加背景图片的时候需要添加data-type=“background-image”

<view class="inner answer_draw_canvas"  data-type="background-image"></view>

3.2、图片

元素要是image的时候要添加data-type=“image” data-url=‘图片地址’, 这边图片地址要在小程序配置白名单,背景图片同下
wxml2canvas 小程序元素生成图片

3.3、文字绘制

文字绘制需要添加data-type=“text” data-text=“要绘制的文字”

<text class="time answer_draw_canvas" data-type="text" data-text="要绘制的文字">要绘制的文字</text>

4、遇到的问题

4.1、边框不展示

要看一下是否设置了box-sizing: border-box;如果css设置了该属性会导致边框不出现

4.2、图片

图片本地的正常引用,如果是链接的一定要保证配置白名单,详情见3.2,否则生成会一直加载中文章来源地址https://www.toymoban.com/news/detail-509487.html

到了这里,关于wxml2canvas 小程序元素生成图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uni-app 微信小程序 图文生成图片 wxml-to-canvas

    在做的小程序要增加一个将文字与图片生成图片不可修改的功能,第一次做,在网上找了不少资料。参考了wxml-to-canvas | 微信开放文档  ,又看了一些相关事例,尝试写了一下。   需要准备的文件及配置项: 1、先把代码片段下载到本地 2、创建wxcomponents目录,把代码片段中的

    2024年02月09日
    浏览(51)
  • 解决前端html2canvas生成图片慢问题

    分享一个小发现 这里首先直接说结论:         由于html2canvas生成图片的过程会从html的head、body层标签开始遍历,所以对于项目较大,但是只需要对 某个dom (下文以D称呼)生成图片的情况非常不友好!          所以,一定要通过ignoreElements过滤掉大部分没用的标签。

    2024年02月13日
    浏览(59)
  • 前端生成pdf之html2canvas+jsPDF,以及解决图片不显示bug

    开发背景: 需要给页面中相应的内容生成pdf,查找文档后发现要用到两个插件。html2canvas 以及 jsPDF html2canvas 给dom结构转化为canvas,然后生成各种类型图片 jsPDF 把canvas 生成的图片url 转化为pdf 参数 image:表示要插入的图片资源,可以是图片文件的路径或者base64编码字符串。

    2024年02月02日
    浏览(54)
  • 小程序采用html2canvas实现html转canvas保存图片

    mpaas小程序中采用html2canvas实现html转canvas保存图片 使用uniapp将代码打包一份h5部署到服务器 h5要保存的图片组件页面report.vue 安装 npm install --save html2canvas 或 yarn add html2canvas 引入import html2canvas from ‘html2canvas’; ts 小程序中采用webview跳转到h5页面

    2024年02月11日
    浏览(46)
  • 【前端】html2canvas生成图片空白排查data:;(js vue react uniapp)

    因为要做一个分享图,就用到了html2canvas,一开始是好好的,今天随便测了下,发现图片显示不出来了。打印了下,生成的图片链接变成了 data:; 。后面一步一步地排查,发现是页面内容太多了,删减一点内容就能显示出来。然后我又去认真看了下html2canvas的各个参数,发现可

    2024年02月03日
    浏览(59)
  • html2canvas生成图片地址Base64格式转成blob在转成file(二进制)可正常发送(保姆教程,复制粘贴可用)

    开始:                                                  最终结果:                                                      1. html2canvas方法生成的图片地址已Base64编码形式放在img标签src中可直接展示生成的图片(注意 页面标签获取位置 ,还有个 setTimeout 页面渲染需要

    2024年02月13日
    浏览(52)
  • uniapp APP端使用html2canvas截图分享小程序卡片图片模糊、跨域等问题解决

    项目场景:uniapp  APP端,分享小程序到微信好友,使用html2canvas截取当前页面做卡片封面图。仅是需要展示部分内容用作卡片封面就可以,不强制需要全屏截图。 问题1、部分页面截取到的图片分享到微信后卡片图片模糊。 问题2、截图时报错:Failed to execute \\\'toDataURL\\\' on \\\'HTMLC

    2024年02月05日
    浏览(85)
  • 使用html2canvas将整个元素导出为图片,其中包含svg和img,解决img跟svg导出时img或svg(canvg处理)不显示的问题,以及相关优化

    目录 前言 一、准备 二、解决问题 1.将svg跟img转为canvas的方法 2.将base64转换成file文件的方法 3.点击下载使用方法 1).对dom没有处理,需求只是将图片导出即可  2).涉及对dom的拖拽,流程图之类的(需复制dom,在复制的dom上进行处理)  三、效果图如下 查阅很多相关的文章和

    2024年01月20日
    浏览(67)
  • html2canvas截图生产海报图片

    图片地址后添加?time=${new Date().valueOf()},不然会报图片跨域报错 原因:这是因为你img是在缓存数据中读取的 并没有访问远程这个图片的时候没有携带请求头。 确保你的图片服务器支持CORS访问,也就是会返回Access-Control-Allow-Origin等响应头;

    2024年02月02日
    浏览(52)
  • uniapp小程序canvas生成图片

    点击页面分享按钮时候,跳出弹出层 ,css完成页面 ,点击弹出层的保存到相册,能生成canvas画布,然后变为图片。 控制台打印生成图片链接。 在canvas画布外 添加父元素,让画布不可见

    2024年03月27日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包