`
wx1569466809
  • 浏览: 72038 次
文章分类
社区版块
存档分类
最新评论

canvas 移动端生成海报问题及本次项目总结

 
阅读更多

1、首先设置html及引入静态文件

<div style="display: none;">
        <img src="@/assets/img/personal/sy.png" class="man man-2" id="man-2" alt="">
        <img src="@/assets/img/personal/bj1.png" id="bg1" alt="">
        <img src="@/assets/img/personal/bj2.png" id="bg2" alt="">
        <img src="@/assets/img/personal/voteImg@2x.png" alt="" id="man-1">
        <img alt="" id="man-1">
        <img alt="" id="qrCode">
</div>

2、canvas绘制方法

createdImageFun ():void {
    const man1:any = document.getElementById('man-1')
    const man2 = document.getElementById('man-2')
    let canvasBg = document.getElementById('bg1')
    if (this.schoolName === '' || !this.schoolName) {
      canvasBg = document.getElementById('bg2')
    }
    const qrcodeImg:any = document.getElementById('qrCode')

    const canvas:any = document.getElementById('myCanvas')
    const ctx = canvas.getContext('2d')
    let qrImage = new Image() // 二维码图片
    canvas.width = 375 // bodyDOM.offsetWidth
    canvas.height = 714
    // 制作背景图
    const patBg = ctx.createPattern(canvasBg, 'repeat')
    ctx.rect(0, 0, 375, 714)
    ctx.fillStyle = patBg
    ctx.fill()
    // 将man1,man2,man3,man4,sen1,btn加入画布
    ctx.drawImage(man1, 0, 92, 375, 375)
    ctx.drawImage(man2, 189, 386, 175, 70)
    ctx.drawImage(qrcodeImg, 250, 595, 100, 100) // x ,y ,w, h
    const schoolname = this.schoolName

    const username = this.studentName
    const userid = 'ID:' + this.studentCode
    const memo = this.declaration
    ctx.font = ' 16px MicrosoftYaHei-Bold'
    ctx.fillStyle = '#FFFFFF'
    ctx.fillText(schoolname, 127, 27, 80, 21)
    ctx.fillStyle = '#4A4A4A'
    ctx.fillText(username, 20, 494, 121, 21)
    ctx.fillStyle = '#4A4A4A'
    ctx.fillText(userid, 270, 494, 121, 21)
    ctx.fillStyle = '#00ACF9'
    ctx.fillText(memo, 20, 547, 324, 17)
    const newImg = new Image()
    newImg.src = canvas.toDataURL('image/png')
    canvas.style = 'display: none';
    (document.querySelector('.lpc-creatImg') as HTMLElement).appendChild(newImg)
    this.canvasImgShow = true
    this.dataLoading = false
  }

使用方法:

this.$nextTick(() => {
            var man1:any = document.getElementById('man-1')
            man1.setAttribute('crossOrigin', 'anonymous') // 配置处理图片跨域问题
            man1.src = this.userImage
            var qrImage:any = document.getElementById('qrCode')
            qrImage.setAttribute('crossOrigin', 'anonymous')
            qrImage.src = this.qrImageHref
            setTimeout(() => {
              this.createdImageFun()
            }, 1000)
          })

问题:

从一开始的使用插件html2canvas绘制开始,遇到绘制一屏问题只能放弃;及QRCode生成二维码,domtoimage绘制在安卓及ios有兼容为题,最后选中还是直接用canvas绘制,遗留问题就是有点模糊;

3、其他问题

1⃣️对于line-height问题在安卓显示会有点偏上的问题,用padding撑开高度并配置line-height:normal;

转载于:https://my.oschina.net/lpcysz/blog/3072289

分享到:
评论

相关推荐

    基于html2canvas生成带二维码的活动海报

    2. `script.js`或`main.js`: 包含处理用户交互和调用html2canvas及qrcode.js的JavaScript逻辑。 3. `style.css`: 用于定义活动海报的样式。 4. `qrcode.js`: 二维码生成库。 5. `html2canvas.min.js`: html2canvas库...

    微信小程序-新版海报分享canvas2d实现(淘宝、京东、拼多多等都在用)

    4、普通canvas生成海报比canvas2d稍慢。 5、通过网上方法,进行大量的开发实现,最后封装成的组件。 6、开发完成后,发现拼多多、淘宝、京东等流行商城都在使用这样子的分享海报。 7、调用组件,只需要传参数即可,...

    h5 canvas移动端画板.html

    h5 canvas移动端画板

    canvas 移动端画板批注pdf预览

    在这个场景中,我们需要结合PDF.js库来解析PDF文件,并利用Canvas在移动端实现画板功能。 PDF.js是由Mozilla开发的一个开源库,它可以将PDF文件转换为可操作的SVG或Canvas元素,从而在浏览器中预览PDF文档。要使用...

    微信小程序海报插件,生成海报的小程序组件wxa-plugin-canvas-master.zip

    本压缩包“wxa-plugin-canvas-master.zip”包含了一个专门用于微信小程序的海报生成组件,它可以帮助开发者在小程序中实现自定义海报的动态生成功能。 首先,我们要理解“wxa-plugin-canvas-master”中的“wxa”...

    qrcodejs2+html2canvas 生成二维码和海报

    代码放到线上使用,本地生成海报图片显示不了,必须...qrcodejs2+html2canvas 生成二维码和海报qrcodejs2+html2canvas 生成二维码和海报qrcodejs2+html2canvas 生成二维码和海报qrcodejs2+html2canvas 生成二维码和海报

    一个基于canvas的移动端图片编辑插件

    【标题】:基于canvas的移动端图片编辑插件 在移动互联网时代,图片编辑已经成为许多应用程序不可或缺的功能,尤其在移动端H5页面和微信小程序中。基于canvas的图片编辑插件为开发者提供了一种轻量级、高效且灵活的...

    HTML5 canvas移动端手机刮刮卡代码.zip

    - 移动端适配:确保刮刮卡在不同尺寸的移动设备上正常显示,可能需要调整canvas的尺寸或比例。 - 性能优化:避免在大范围内频繁操作canvas像素,可以使用Web Workers分担计算任务,或者只更新实际被触碰的像素区域。...

    js移动端页面生成图片demo(基于html2Canvas.js).zip

    "js移动端页面生成图片demo(基于html2Canvas.js).zip"是一个示例项目,它演示了如何利用html2Canvas.js这个JavaScript库在移动端实现这一功能。下面我们将深入探讨相关知识点。 1. **html2Canvas.js**: 这是一个...

    uniapph5 生成邀新海报(canvas绘制海报和二维码,两者拼接)

    本篇主要聚焦于利用uniapp来生成H5邀新海报,具体涉及的是通过`canvas`进行海报绘制以及整合邀请二维码的实现。 首先,`canvas`是HTML5提供的一种强大的绘图工具,通过JavaScript语言可以直接在网页上绘制图形,...

    vue-canvas-poster 海报合成

    在这个“vue-canvas-poster”项目中,我们将探讨如何结合Vue和Canvas来实现一个海报合成的功能。 首先,Vue组件是Vue.js的核心概念,它允许开发者将UI拆分成可复用的部分。在这个案例中,“vue-canvas-poster”可能...

    HTML5 canvas移动端斗地主小游戏.zip

    在"HTML5 canvas移动端斗地主小游戏.zip"这个压缩包中,包含了一个利用Canvas实现的移动端斗地主游戏。斗地主游戏在中国极其流行,通常由三名玩家参与,使用一副扑克牌进行,目标是尽快出完手中的牌。 在这个游戏中...

    微信小程序生成海报demo

    通过学习和理解这个“微信小程序生成海报demo”,开发者不仅可以掌握海报生成的基本流程,还能深入理解微信小程序的前端技术,包括canvas绘图、事件处理、微信小程序API的使用等。这些技能对于开发高质量的小程序...

    生成图片_H5生成海报代码_

    在当前的数字化时代,H5(HTML5)已经成为制作互动网页和移动端应用的重要工具,而“生成图片_H5生成海报代码_”这个标题暗示了...通过这些技术,我们可以创建出高度定制化的海报生成应用,满足用户个性化表达的需求。

    vue ---- 基于canvas的绘制海报组件

    在这个“vue ---- 基于canvas的绘制海报组件”的项目中,开发者利用 Vue 2.0 版本创建了一个专用于在网页上绘制H5海报的组件。这个组件充分利用了HTML5的Canvas元素,提供了一种灵活的方式来动态生成和定制海报。 ...

    原生小程序生成海报-Painter插件,html转canvas

    在实际开发中,开发者需要对这些文件进行适当的修改,以满足特定的海报生成需求。例如,在`pages`目录下的某个页面文件中,可能包含使用Painter插件绘制海报的逻辑;在`utils`目录下,可能有处理HTML内容和转换为...

    html2canvas生成图片demo.zip

    在这个“html2canvas生成图片demo.zip”压缩包中,包含了一个演示如何使用html2canvas解决实际开发问题的小型项目。 在描述中提到,这个demo解决了一些在开发过程中遇到的bug,这意味着它可能包含了一些常见问题的...

    canvasH5:使用原生canvas画海报

    利用 canvas 与 vue 生成 H5 海报。 Installing git clone 项目名 使用方法 安装 http-server:打开终端,进入目标文件夹,安装 http-server:npm install http-server -g 启动服务:在终端敲入 http-server 启动 ...

Global site tag (gtag.js) - Google Analytics