devicePixelRatio手机图片模糊的原因

时间:2022-09-07 22:25:52

一、移动设备图片模糊问题

手机上图片模糊问题原因就是一个像素在电脑上和手机上代表的实际像素的不同。

我们在样式表中使用的px(独立像素)单位其实并不一定代表着实际的一个像素(物理像素),这还要看硬件的设置。例如下面盗来的图片,右图一个独立像素等于四个像素,左图一个独立像素等于一个像素。devicePixelRatio为表示这个比例的值,如果设备宽度为640物理像素,320独立像素,则devicePixelRatio为640/320=2,一个独立像素等于4个物理像素。

devicePixelRatio手机图片模糊的原因

所以,如果切了一张10像素宽高的图放在devicePixelRatio为2的屏幕中,设置宽高为10px,实际上就是在20像素宽高的区域中放了一张10像素的图片,而图片被拉长为20像素,这样就糊了。如果要完美显示得放一张20像素宽高的图。

二、解决办法

所以我们可以根据设备的devicePixelRatio给出不同的样式。

如果用脚本可以用window.devicePixelRatio进行判断,目前在移动设备基本支持该属性。

用css可以用媒体查询,例如:

@media only screen and (-webkit-min-device-pixel-ratio : 1.5),only screen and (min-device-pixel-ratio : 1.5){

         //样式

      }

@media only screen and (-webkit-min-device-pixel-ratio : 2),only screen and (min-device-pixel-ratio : 2){

        //样式

      }

注意:用媒体查询device-width的值在ios和android是不一样的,一个代表独立像素一个代表物理像素,就跟用window.screen.width取屏幕宽度一样,在两个系统上取得的值也是不一样的。

现在主流的智能手机devicePixelRatio大部分为2,一部分为1.5,3的比较少,1的则更少(PC为1)。

三、关于viewport

这里主要讲一下width和scale两个属性,经过粗略测试:

Ios上:如果没有设置width而设置了initial-scale,那么width = device-width / initial-scale;如果没有设置initial-scale而设置了width,那么scale=device-width/width。

Android上:如果没有设置width而设置了initial-scale,那么width = device-width;如果没有设置initial-scale而设置了width,那么scale=device-width/width。

所以,如果想让图片在手机上显示正常,也可以利用viewport,例如在iphone5s上,device-width为320,物理像素宽度为640,可以在viewport中设置width为640(独立像素),scale为0.5,则图片可以在屏幕中完好显示,相当于把640宽压到了320宽中(独立像素)。

devicePixelRatio手机图片模糊的原因的更多相关文章

  1. 移动端高清适配方案(解决图片模糊问题、1px细线问题)

    本文介绍了移动端适配的3种方法,以及移动端图片模糊问题和1px细线问题的解决方法.当然了,在这之前先整理了与这些方法相关的知识:物理像素.设备独立像素.设备像素比和viewport. >> ...

  2. 解决WPF图片模糊最佳方法(绑定PixelWidth与PixelHeight)

    从事WPF开发一年有余,对于图片显示模糊相信很多人都遇到过.网络上查找能得到一堆解决方法,但都是会带来其他负面影响得不到最佳效果.其实,有些图片会因为垂直分辨率/水平分辨率不同而造成在WPF界面上显示 ...

  3. vue中使用html2canvas及解决html2canvas截屏图片模糊问题

    最近在项目中用到了html2canvas插件,遇到的一些坑写下来,与大家共勉. html2canvas  官方网站http://html2canvas.hertzen.com/index.html 这 ...

  4. WPF图片模糊的解决之路

    设计稿转为xaml后,设计师开始review UI了,发现图片都模糊了. 这一张很神奇,三个图片都是同一张,中间的那个最清楚,上面的这个左右两边清楚,下面的那个四个边都不清楚. 这一张,右边是原图,左 ...

  5. 【转】解决WPF图片模糊最佳方法(绑定PixelWidth与PixelHeight)

    解决WPF图片模糊最佳方法(绑定PixelWidth与PixelHeight) 转载自:http://www.360doc.com/content/13/1126/09/10504424_332211 ...

  6. css3图片模糊过滤效果

    css3图片过滤效果,鼠标放上后其它图片模糊,鼠标所在位置的图片是清淅的,有效索引出当前的图片,对图片的模糊处理是本特效的亮点,你完全可以将模糊的效果应用于其它的图片特效中,你同样也可借此代码研究一下 ...

  7. TML5如何在移动网页端调用手机图片或者camera

    TML5如何在移动网页端调用手机图片或者camera可以参考这篇文章: 如果你开始基于iOS系统(ios6 above) 的web应用,可以考虑这段代码: 点击按钮,会调用你的摄像头相册 附源码文件: ...

  8. dedecms幻灯片调用图片模糊的解决办法

    dedecms幻灯片调用的是缩略图,如果图片尺寸比例和幻灯片的大小相差太大的话,图片就会自动拉伸模糊,比较影响美观和用户体验,下面就有常用的2个方法来解决这个图片模糊的问题. 第一种:手动制图 我们用 ...

  9. UWP 图片模糊

    先看一下效果: 这是微识别的个人中心页面,顶部有头像,以及背景图片模糊. 要实现这样的效果,有两种方法. 第一种麻烦点,也是我现在用的.想看简单的,翻到最后 1. 首先看一下xaml代码: <S ...

随机推荐

  1. C语言位域

    转载自 http://tonybai.com/2013/05/21/talk-about-bitfield-in-c-again/ 再谈C语言位域 五 21 bigwhite技术志 bitfield, ...

  2. HTML5-02 元素

    概述 HTML 文档主要由元素组成,且主要分为两大部分:头部 和 主体.如图: 头部 概述 <head> 元素包含了所有的头部标签.<head> 元素中通常包含脚本(scrip ...

  3. RF内置库-----内置库的学习过程总结

    前段时间充忙的学习RF,系统学习完之后就开始动手做各种接口的测试,虽然各类的接口测试基本能跑通了,但是重复造车的问题存在太明显.RF本身内置库就已经比较丰富,比如不需要import直接就加载到内存的B ...

  4. 处理部分WordPress核心代码或功能,让你的网站更快

    处理部分WordPress核心代码或功能,让你的网站更快 http://www.wpdaxue.com/speed-up-wordpress.html

  5. border属性妙用

    以前只知道border属性是盒模型中的边框属性,一直不清楚每个边的border是矩形拼接有重合呢,还是梯形无缝拼接的. border梯形 为了观察边框究竟是哪一种拼接方式,为边框设置不同的颜色背景,代 ...

  6. PermissionError&colon; &lbrack;WinError 32&rsqb; 另一个程序正在使用此文件,进程无法访问。&colon; &&num;39&semi;C&colon;&bsol;&bsol;Users&bsol;&bsol;video&bsol;&bsol;AppData&bsol;&bsol;Local&bsol;&bsol;Temp&bsol;&bsol;tmpfipzk8ma&&num;39&semi;--问题解决

    学习python+selenium总是遇到各种问题 代码如下: from selenium import webdriverbrowser = webdriver.PhantomJS() #浏览器初始 ...

  7. 用js来实现那些数据结构—目录

    首先,有一点要声明,下面所有文章的所有内容的代码,都不是我一个人独立完成的,它们来自于一本叫做<学习JavaScript数据结构和算法>(第二版),人民邮电出版社出版的这本书.github ...

  8. 用万能马甲免费看VIP电影

    什么是:万能马甲? 它浏览器的一个扩展程序插件,安装后能看一些热门网址的VIP特权,免费观看付费电影等. 使用过程: 1. 访问网址:http://www.wndd123.com/ 点击免费看电影时提 ...

  9. Dell3470无法开机或开机黑屏情况下检测屏幕是否正常

    故障现象:Dell3470无法开机,点击开关按键无任何反应 故障分析:释放静电后故障依旧.更换电源适配器后故障依旧,初判主板故障,无法确认屏是否正常 解决方法:除去拆机单独测试外,Dell售后告知一个 ...

  10. ----Androd 系统开机显示白条提示 &OpenCurlyDoubleQuote;there is internal problem with your device, Contact your manufacture &period;&period;&period; ”

    ref: https://www.theandroidsoul.com/how-to-fix-theres-an-internal-problem-with-your-device-error-on- ...