博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
devicePixelRatio 那些事儿
阅读量:6613 次
发布时间:2019-06-24

本文共 1125 字,大约阅读时间需要 3 分钟。

devicePixelRatio 那些事儿

设备像素比

window.devicePixelRatio 是设备上物理像素和设备独立像素的比例,即公式表示为:window.devicePixelRatio = 物理像素 / dips。

物理像素(physical pixel):设备能控制显示的最小单位

设备独立像素(device-independent pixel):独立于设备的用于逻辑上衡量像素的单位
每英寸像素量(pixels per inch):一英寸长度上可以并排的像素数量

正常人眼可以识别的分辨率为 300PPI,而现在很多设备的分辨率都超过 300PPI,如果设备总是以满分辨率来显示东西就可能造成文字太小无法看清,因此像浏览器这样的软件就会对内容做一次放大后再进行渲染(也就是降低分辨率):要降低分辨率就需要让像素这个单位变大,因此 PPI 的计算不再使用物理像素,而改用设备独立像素,那么设备独立像素和物理像素之间就存在一个比例差异,这就是 设备像素比

单位 dppx(dots per pixel)表示每个 dip 占用几个物理像素,或者说 css 中的单位 px 在屏幕上占用多少物理像素,在 PC 浏览器上这个值通常为1(浏览器提供的缩放功能实际上就是修改设备像素比来实现的)。

我们可以使用以下代码获取 devicePixelRatio 值:

function getPixelRatio(context) {    const backingStore = context.backingStorePixelRatio ||        context.webkitBackingStorePixelRatio ||        context.mozBackingStorePixelRatio ||        context.msBackingStorePixelRatio ||        context.oBackingStorePixelRatio ||        context.backingStorePixelRatio || 1;    return (window.devicePixelRatio || 1) / backingStore;}

Canvas 在高清屏下绘制图片模糊的解决方案

问题分析

可知 Canvas 不是矢量图而像图片一样是位图模式的,如果不做高清屏适配的话浏览器就会以多个像素点的宽度来渲染一个像素,相当于图片被放大多倍而因此变模糊。

解决方案

即将 canvas 的高和宽分别乘以 ratio 将其放大,然后再用 css 将其样式高和宽限制成初始的大小。

转载地址:http://rwoso.baihongyu.com/

你可能感兴趣的文章
脚本结构和执行
查看>>
warden创建容器的过程
查看>>
【c++】size_t 和 size_type的区别
查看>>
SpringBoot之浅析配置项解析(三)
查看>>
15.2. switchport trunk encapsulation dot1q 提示 invaild input at^marker.
查看>>
getline函数(精华版)
查看>>
互联网辅助代理IP软件的应用需守牢数据安全的“底线”
查看>>
快速排序及其优化
查看>>
程序猿生存指南-10 敲定工作
查看>>
LDAP密码认证例子
查看>>
2019程序媛面试之美少女战士
查看>>
黑马程序员——内部类
查看>>
校园的早晨
查看>>
单例模式的5种实现方式,以及在多线程环境下5种创建单例模式的效率
查看>>
oracle取前几行|中间几行|后几行
查看>>
16.1 Tomcat介绍
查看>>
QuickBI助你成为分析师——数据源FAQ小结
查看>>
十周三次课
查看>>
S/4HANA服务订单Service Order的批量创建
查看>>
2008 AD 复制有防火墙要开什么端口
查看>>