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;
相关推荐
1. **移动端Canvas项目适配全屏问题**: 由于Canvas的`width`和`height`属性只能接受像素值,不支持响应式单位如`rem`,所以在不同分辨率的移动设备上实现全屏铺展是个挑战。解决方案是通过JavaScript动态获取设备...
总结来说,要在Vue中用canvas实现二维码和图片合成海报,主要步骤包括: 1. 导入图片资源。 2. 设置海报和二维码的尺寸比例。 3. 根据屏幕宽度调整图像大小。 4. 使用canvas创建画布并绘制图片。 5. 逐层绘制底图和...
这个特定的二维码组件,名为“wx-mini-qrcode”,是为了解决微信小程序中的二维码生成问题。它提供了两种不同的呈现方式: 1. **Base64输出**:Base64是一种将二进制数据转换为可打印字符的编码方式。在微信小程序...
3 Android SqliteManager 源码.zip
内容概要:本文详细介绍了基于S7-200 PLC的煤矿排水系统智能控制方案,重点讨论了三台水泵(两台工作水泵和一台备用水泵)的联动与备援策略。系统通过超声波液位传感器实时监测水位,根据不同水位情况自动控制水泵的启停。具体而言,水位低时不启动水泵,水位介于中水位和高水位之间时启动1号水泵,水位超过高水位则启动1号和2号水泵共同工作。若1号或2号水泵出现故障,系统会自动启用3号备用水泵。此外,MCGS6.2组态画面用于实时监控水位和水泵状态,帮助操作员及时应对异常情况,确保矿井安全。 适合人群:从事煤矿自动化控制领域的技术人员、矿业工程管理人员及相关研究人员。 使用场景及目标:适用于需要提高煤矿排水系统自动化水平的场合,旨在提升矿井排水效率和安全性,减少人工干预,确保矿井生产安全。 其他说明:文中提到的技术方案不仅提高了排水系统的可靠性,还为未来的智能化矿山建设提供了有益借鉴。
scratch少儿编程逻辑思维游戏源码-灌篮之王.zip
scratch少儿编程逻辑思维游戏源码-飞翔马里奥(2).zip
scratch少儿编程逻辑思维游戏源码-火柴人大战 中世纪战争.zip
scratch少儿编程逻辑思维游戏源码-几何冲刺(2).zip
南京证券-低轨卫星互联网启动,天地一体通信迈向6G
nginx-1.20.1
sshpass-1.06-8.ky10.aarch
少儿编程scratch项目源代码文件案例素材-我的世界2D(更新北极).zip
通信行业专题研究:车载全息数字人——AI+Agent新场景,全息投影新方向-20231121-国盛证券-13页
内容概要:本文详细介绍了利用西门子S7-200 PLC和组态王软件构建的邮件分拣系统的具体设计方案和技术细节。首先,文中阐述了硬件部分的设计,包括光电传感器、传送带电机以及分拣机械臂的连接方式,特别是旋转编码器用于精确测量包裹位移的技术要点。接着,展示了PLC编程中的关键代码段,如初始化分拣计数器、读取编码器数据并进行位置跟踪等。然后,描述了组态王作为上位机软件的作用,它不仅提供了直观的人机交互界面,还允许通过简单的下拉菜单选择不同的分拣规则(按省份、按重量或加急件)。此外,针对可能出现的通信问题提出了有效的解决方案,比如采用心跳包机制确保稳定的数据传输,并解决了因电磁干扰导致的问题。最后,分享了一些现场调试的经验教训,例如为减少编码器安装误差对分拣精度的影响而引入的位移补偿算法。 适合人群:从事自动化控制领域的工程师或者对此感兴趣的初学者。 使用场景及目标:适用于需要提高邮件或其他物品自动分拣效率的企业或机构,旨在降低人工成本、提升工作效率和准确性。 其他说明:文中提到的实际案例表明,经过优化后的系统能够显著改善分拣性能,将分拣错误率大幅降至0.3%,并且日均处理量可达2万件包裹。
scratch少儿编程逻辑思维游戏源码-机械汽车.zip
内容概要:本文详细探讨了在连续介质中利用束缚态驱动设计并实现具有最大和可调谐手征光学响应的平面手征超表面的方法。文中首先介绍了comsol三次谐波和本征手性BIC(束缚态诱导的透明)两种重要光学现象,随后阐述了具体的手征超表面结构设计,包括远场偏振图、手性透射曲线、二维能带图、Q因子图和电场图的分析。最后,通过大子刊nc复现实验验证了设计方案的有效性,并对未来的研究方向进行了展望。 适合人群:从事光学研究的专业人士、高校物理系师生、对光与物质相互作用感兴趣的科研工作者。 使用场景及目标:适用于希望深入了解手征超表面设计原理及其光学响应机制的研究人员,旨在推动新型光学器件的研发和技术进步。 其他说明:本文不仅展示了理论分析和模拟计算,还通过实验证明了设计方法的可行性,为后续研究奠定了坚实的基础。
少儿编程scratch项目源代码文件案例素材-位图冒险.zip
少儿编程scratch项目源代码文件案例素材-校园困境2.zip
少儿编程scratch项目源代码文件案例素材-兔子吃萝卜.zip