如何避免使用canvas生成带二维码海报踩坑
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍了如何避免使用canvas生成带二维码海报踩坑的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何避免使用canvas生成带二维码海报踩坑文章都会有所收获,
千家信息网最后更新 2025年01月19日如何避免使用canvas生成带二维码海报踩坑
这篇文章主要介绍了如何避免使用canvas生成带二维码海报踩坑的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何避免使用canvas生成带二维码海报踩坑文章都会有所收获,下面我们一起来看看吧。
问题如下
图片不显示
绘制渲染的时候图像不显示:是因为图片异步加载,所以canvas的操作需要放在onload事件中,否则图片会不显示,因为图片不止一张,建议放在promise中,用async,await调用
canvas最终生成图片分享出去,生成的图片不显示:是因为图像跨域问题,设置img的attr,'crossOrigin'为'Anonymous'就好了,但是要注意,如果不小心为base64也设置了这个参数,在低版本的安卓(我出现问题是在华为安卓4.4.2中)base64就不会显示。
图像模糊
一开始对安卓机型统一做了dpr=1的处理,结果安卓机上图片非常的模糊,圆角头像锯齿严重,网上的解决方法无一成功,后来还是将dpr设为window.devicePixelRatio就好了,只是图片的宽高最好设置为固定值,根据flexble自适应
部分代码示例
// 头像;const imgAvadar = await promiseLoadImg(this.userInfoExternal.headUrl);const imgSize = 40 * this.dpr;const imgPos = 24 * this.dpr;ctx.arc((this.canvas.width / 2), (imgPos + (imgSize / 2)), (imgSize / 2), 0, 2 * Math.PI);ctx.clip();ctx.drawImage(imgAvadar, ((this.canvas.width / 2) - (imgSize / 2)), imgPos, imgSize, imgSize);
new Promise(resolve => {
const img = new Image(); // base64添加了以下跨域配置,在低版本安卓中会不显示图片 if (src.indexOf('base64,') === -1) { img.setAttribute('crossOrigin', 'Anonymous'); } img.onload = function () { resolve(img); }; img.src = src;});
关于"如何避免使用canvas生成带二维码海报踩坑"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"如何避免使用canvas生成带二维码海报踩坑"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
图片
生成
安卓
海报
二维
二维码
图像
知识
问题
内容
头像
版本
篇文章
成功
事件
代码
价值
参数
只是
圆角
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
南通大数据服务器代理商
饥荒联机版加载服务器卡顿
程序调接口拿数据库
计算机网络技术升本率
网络安全技术课程设计报告书
新华互联网科技大赛视频
收到软件开发服务费 做账
网络技术员学什么软件
千里马数据库如何查看密码
上海数字化管理软件开发
龙岗区新一代网络技术开发工艺
停车收费系统配置数据库怎样配置
肥东企业网络技术咨询怎么样
软件开发公司北京
剪辑视频软件开发
阿里云服务器有多少e
盛行时代网络安全吗
游戏必备环境数据库
oracle数据库表为空语句
贵州联想服务器
软件开发薪水能达到多少钱
施乐v80服务器开机打印画面
网络安全的证书怎么考
17年网络安全主题
企业服务器数据管理
织梦 数据库链接失败
初中生学软件开发得多长时间
湛江哪里招聘网络安全
搭建认证服务器
僵尸世界无法连接服务器