在线直播系统源码,canvas 生成图片模糊
在线直播系统源码,canvas 生成图片模糊
关于canvas的一些基础知识
canvas绘制的是位图
canvas的width和height属性
1 | canvas的width和height属性与style的width,height 不同。应注意区分:<br><canvas width= "600" height= "300" style= "width: 300px; height: 150px" ></canvas><br>style中的width和height分别代表canvas这个元素在界面上所占据的宽高,即样式上的宽高<br>attribute中的width和height则代表canvas实际像素的宽高<br>也就是就是1个逻辑像素实际上由2个canvas像素填充。<br>例如: 示例一: canvas width= "300" height= "150" style= "width: 300px; height: 150px" // 红色<br>示例二:canvas width="600" height="300" style="width: 300px; height: 150px" // 蓝色<br>也就项上述的图片展示一致 红色为普通屏 蓝色为高清屏; |
图片模糊原因:
canvas 绘制的图形是位图,即栅格图像或点阵图像,当将它渲染到高清屏时,会被放大,每个像素点会用 devicePixelRatio 的平方个物理像素点来渲染,因此图片会变得模糊。
解决方法:
放大 devicePixelRatio 倍 canvas 的宽高,然后再用css缩小回到你想要的理想像素
uniapp 解决问题实例:
1 | 1、 canvas 节点<br><!-- 避免图片失真,获取设备像素比设置画布大小,css样式在设置内容块宽高 --><br><canvas canvas-id= "mycanvas" :style= "'width: '+popWidth*devicePixelRatio+'px;height: '+canvasHeight*devicePixelRatio+'px;transform:scale('+1/devicePixelRatio+'); transform-origin: 0px 0px;position: fixed;opacity: 0;top: -'+canvasHeight+100+'px;'" ></canvas><br>2、获取设备像素比<br>uni.getSystemInfo({<br> success(res) {<br> that.popWidth = res.windowWidth;<br> // 设备像素比大于1<br> if (res.devicePixelRatio > 1) {<br> that.devicePixelRatio = res.devicePixelRatio;<br> }<br> }<br>});<br>3、绘制<br>let ctx = uni.createCanvasContext('mycanvas', this); // 创建canvas对象<br>ctx.setFillStyle('#fff');<br>// 避免二维码失真,导致识别二维码失败;<br>// 获取设置像素比。绘制设备像素比相符的画布内容,在csstranform设置节点样式缩放,transform-origin基准设置为0,0;<br>// 这样获取到的画布图片内容就不会失真了。<br>ctx.fillRect(0, 0, that.popWidth*that.devicePixelRatio, that.canvasHeight*that.devicePixelRatio); // that.canvasHeight 为你设计图的画布高度; |
以上就是 在线直播系统源码,canvas 生成图片模糊,更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2021-09-22 直播app系统源码,实现隐藏标题栏
2021-09-22 直播视频app源码,实现直播内容自定义分页的效果
2021-09-22 直播带货app开发利用ScrollView实现下拉内容刷新的效果