问题:canvas在高清屏显示模糊

前几天在做PDF预览时(使用mozilla的pdf.js),发现PDF文字在canvas中显示非常模糊,在网上搜出来的中文结果都没有这方面相关的,后面用英文搜索到了原因,因为我测试用的是retina屏。立即用普通显示器上试了一下,表现果然是正常的。

分析

设备像素比 = 物理像素 / 设备独立像素dip
canvas元素依赖于设备像素比,在retina屏中设备像素比是2,意味着宽度为100pxcanvas,需要200px的填充才会清晰地显示。

解决方法

既然是高清屏的原因,那么只要对高清屏做下适配就OK啦。

代码

pdf.js的解决方案详见 https://github.com/lwenn/pdf-viewer-easy

// 获取设备像素比
var PIXEL_RATIO = (function () {var ctx = document.createElement('canvas').getContext('2d'),dpr = window.devicePixelRatio || 1,bsr = ctx.webkitBackingStorePixelRatio ||ctx.mozBackingStorePixelRatio ||ctx.msBackingStorePixelRatio ||ctx.oBackingStorePixelRatio ||ctx.backingStorePixelRatio || 1;return dpr / bsr;
})();var canvasWidth = 1000,canvasHeight = 500;
// 适配高清屏,canvas内容的宽高是实际的宽高的PIXEL_RATIO倍
canvas.width = canvasWidth * PIXEL_RATIO;
canvas.height = canvasHeight * PIXEL_RATIO;
canvas.style.width = canvasWidth + 'px';
canvas.style.height = canvasHeight + 'px';
// 缩放绘图
context.setTransform(PIXEL_RATIO, 0, 0, PIXEL_RATIO, 0, 0);

canvas绘图在高清屏显示模糊相关推荐

  1. 高清屏概念解析与检测设备像素比的方法

    前言 做移动端h5开发很久了,从开始入行到现在.很多知识和工具都是在用前辈留下的遗产,都没有深入的研究过原因,了解为什么要这么去做. 也许自己也是过了交给自己做什么就做什么的阶段了.在国庆节有一个大块 ...

  2. emiya-canvas.js 解决ios下拍照倾斜与canvas高清屏下绘图模糊问题

    场景 解决在移动端拍照,用 canvas 绘图出现图片逆时针旋转 90 度的问题. canvas 在高清屏与retina屏下绘图模糊的问题. 如下图: 就用我老婆来做模特了~ 下图是拍照过后渲染在画布 ...

  3. emiya-canvas.js 解决ios下拍照倾斜与canvas高清屏下绘图模糊问题 1

    场景 解决在移动端拍照,用 canvas 绘图出现图片逆时针旋转 90 度的问题. canvas 在高清屏与retina屏下绘图模糊的问题. 如下图: 就用我老婆来做模特了~ 下图是拍照过后渲染在画布 ...

  4. 掌财社:怎么解决Canvas绘图出现模糊问题?在高清屏解决方法解析!

    我们在使用高清屏进行工作或者娱乐的时候都会看起来比较舒适,那么大家知道吗?屏幕的一个物理像素就是css所定义的一个逻辑像素.所以下面我们来介绍有关于"怎么解决Canvas绘图出现模糊问题?& ...

  5. canvas 实现图片局部模糊_Canvas 在高清屏下绘制图片变模糊的解决方法

    前提条件 假设我们要在 canvas 中绘制一张 300 x 90 的图片,并且要保证它在高清屏中不模糊.那么我们首先要准备一张 600 x 180的图片,处理过高清屏的同学应该会有这方面的经验. 问 ...

  6. 解决小程序canvas高清屏模糊问题

    原因 因为 canvas 不是矢量图,而是像图片一样属于位图.高 dpi 显示设备意味着每平方英寸有更多的像素,比如说二倍屏,手机就会以2个像素点的宽度来渲染一个像素,该 canvas 在屏幕中相当于 ...

  7. 【转】解决 canvas 在高清屏中绘制模糊的问题

    [转]解决 canvas 在高清屏中绘制模糊的问题 参考文章: (1)[转]解决 canvas 在高清屏中绘制模糊的问题 (2)https://www.cnblogs.com/lanshengzhon ...

  8. 华硕U303LA换屏记--普通屏换成高清屏1920x1080

    因为工作需要,  要经常用到手提电脑, 华硕U303LA原来的屏是普通屏. 长时间看时, 看得我眼晴很不舒服. 普通屏都是偏灰色的. 不适宜长时间观看. 我就在网上对比了几天, 去深圳华强北的笔记本屏 ...

  9. 极致视觉追求 六款热门高清屏笔记本推荐

    现在的手机屏幕越大越受欢迎,而平板屏幕似乎越小越受欢迎,很明显,人们在喜欢大屏震撼视觉的同时,也希望其可以有着很好地便携性.而如果将这个概 念折合到笔记本中,就是要选一款有着良好便捷性的大屏幕笔记本. ...

最新文章

  1. Swift 中使用 SQLite——新增数据
  2. python安装第三方库太慢_Python 安装第三方库 pip install 安装慢安装不上的解决办法...
  3. 有效运维的 on-call 机制
  4. java 唯一流水号_JAVA流水号生成规格,采用同步单例生成,保证永远唯一
  5. 什么是程序员的模式化思维方式?
  6. 20190829:(leetcode习题)环形链表
  7. 关于iframe跨域实践(转载)
  8. android开发 自我优势_Android程序员必看之Android六大优势
  9. 数据挖掘05-偏相关分析【原理、案例、python实现】
  10. MC34063升压芯片——5V转12V、-12V仿真与实物制作
  11. x264码率控制参数详解
  12. java method方法_java入门(六) | 方法(Method)的定义和使用
  13. FIL存储服务器订单系统,开源存储系统Slate构建FIL检索市场
  14. 通过驱动断链来隐藏驱动
  15. 修改迅雷下载链接的方法。
  16. Inwook,Kong
  17. Java程序的类体两部分_一般Java程序的类体由两部分组成:一部分是____,另一部分是____。...
  18. Python 中的数字到底是什么?
  19. 诺基亚 x302玩java_诺基亚x302刷机怎么做【图文】
  20. 初级游戏外挂编程详解 windows运行原理+游戏辅助编程 游戏外挂编程

热门文章

  1. 11、Vue的生命周期
  2. C/C++ 木材加工
  3. 量化交易-回测调参-神龙摆尾
  4. biopython:基因genbank格式转核酸或氨基酸fasta格式
  5. 校内模拟赛(20170917)
  6. 如何通过IP访问MySQL数据库
  7. <<多模态预训练—泛读>>2022:BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Unders
  8. 服务器网维虚拟盘无法启动,网维大师网吧虚拟磁盘客户机不出盘案例
  9. XXXXXXXX学校“新教师、新风采”展示课活动方案
  10. Winsock套接字开发网络聊天室实例(C/S)模式