位图像素

1个位图像素是栅格图像(如:png,jpg,gif等)最小的数据单元。每一个位图像素都包含这一些资深的现实信息(如:显示位置,颜色值,透明度等)。也称物理像素。

dips,(dip或dp或device independent pixels)指的是设备独立像素(也叫密度无关像素),可以认为是计算机坐标系统中得一个点,这个点代表一个可以由程序使用的虚拟像素(比如: css像素),然后由相关系统转换为物理像素。

话说回来,dips到底有什么用呢?dip可以用来辅助区分视网膜设备还是非视网膜设备。简单解释一下,视网膜设备指的是分辨率达到300ppi这个‘神奇数字’(每英寸300个像素点)

设备像素比dpr:devicePixelRatio其实指的是window.devicePixelRatio

window.devicePixelRatio是设备上物理像素和设备独立像素(device-independent pixels (dips))的比例。

公式表示就是:window.devicePixelRatio = 物理像素 / dips

在普通屏幕下是没问题的,但是在retina屏幕下就会出现位图像素点不够,从而导致图片模糊的情况

对于dpr = 2的, 1个位图像素对应于4个物理像素,由于单个位图像素不可以再进一步分割,所以只能就近取色,从而导致图片模糊。

解决办法使用分辨率大两倍的图片

如200*300 img 标签,就需要提供400*600的图片.由此一来位图像素点的个数是原来的4倍,在retina屏幕下,位图像素点个数就可以物理像素点个数形成1:1 的比例,图片自然就清晰了。

这里就还有另一个问题,如果普通屏幕下,也用了两倍图片,会怎样呢?

很明显,在普通屏幕下,200×300(css pixel)img标签,所对应的物理像素个数就是200×300个,而两倍图片的位图像素个数则是200×300*4,所以就出现一个物理像素点对应4个位图像素点,所以它的取色也只能通过一定的算法(显示结果就是一张只有原图像素总数四分之一,我们称这个过程叫做downsampling),肉眼看上去虽然图片不会模糊,但是会觉得图片缺少一些锐利度,或者是有点色差(但还是可以接受的)。

原文地址:https://www.cnblogs.com/wangzhenling/p/8989810.html

时间: 2024-10-30 05:16:40

位图像素的相关文章

移动端物理/css/位图像素概念以及rem布局的实现

这方面的知识一直一知半解.从前看过一些文章,也没有豁然开朗的感觉.今天看了这篇http://div.io/topic/1092感觉明白了一些,不论是否正确,先做记录,留待日后验证. 1. 物理像素.CSS像素与位图像素 物理像素是设备本身用于渲染画面的最小显示单元.我们平时买手机,比如iphone6或者华为看到的720 * 1080, 1080 * 1920其实都是物理像素.显然物理像素不等于PC前端开发所理解的屏幕宽度. CSS像素是编程时使用的虚拟像素.我的理解是CSS像素是以屏幕宽度为基准

IOS中使用像素位图(CGImageRef)对图片进行处理

IOS中对图片进行重绘处理的方法总结 一.CGImageRef是什么 CGImageRef是定义在QuartzCore框架中的一个结构体指针,用C语言编写.在CGImage.h文件中,我们可以看到下面的定义: ? 1 typedef struct CGImage *CGImageRef; CGImageRef 和 struct CGImage * 是完全等价的.这个结构用来创建像素位图,可以通过操作存储的像素位来编辑图片. QuartzCore这个框架是可移植的. 二.CGImageRef相关的

wpf,vb,位图剪裁的方法

‘ 貌似WPF对GDI+不提供支持,要达到剪裁图像的方法,可以使用image.clip,’不过clip只是对图片的一个遮挡拦截效果,并不改变本身的图片资源.‘下面的代码提供了剪裁图片资源的方法. Dim path = "C:\Users\Administrator\Desktop\image\image\Images\tori_gaku_02.png" Dim bitmap As BitmapSource = New BitmapImage(New Uri(path, UriKind.

<<位图>>笔记

位图文件由三部分组成:文件头 + 位图信息 + 位图像素数据 位图文件头.位图文件头主要用于识别位图文件.以下是位图文件头结构的定义: typedef struct tagBITMAPFILEHEADER { // bmfh WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } BITMAPFILEHEADER; 其中的bfType值应该是"BM"(0x4d42),标志该文件是

c#图像处理入门(-bitmap类和图像像素值获取方法)

c#图像处理入门 -bitmap类和图像像素值获取方法 一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下: 1. GetPixel方法和SetPixel方法:获取和设置一个图像的指定像素的颜色. 2. PixelFormat属性:返回图像的像素格式. 3. Palette属性:获取和设置图像所使用的颜色调色板. 4. Height Width属性:返回图像的高度和

C#中的bitmap类和图像像素值获取方法

一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下: 1. GetPixel方法和SetPixel方法:获取和设置一个图像的指定像素的颜色. 2. PixelFormat属性:返回图像的像素格式. 3. Palette属性:获取和设置图像所使用的颜色调色板. 4. Height Width属性:返回图像的高度和宽度. 5. LockBits方法和UnlockBits

第14章 位图和位块传输_14.4 GDI位图对象(1)

14.4.1 创建DDB (1)创建 HBITMAP= CreateBitmap(cx,cy,cPlanes,cBitsPixel,lpBits); 参数 说明 cx,cy 指定位图宽度和高度,单位为像素. cPlanes 颜色平面数目.标准的VGA显卡具有4个连续的颜色平面,每个平面取一个对应位,把它们组合起来就是一个像素.但这样被创建出来的位图被限制为标准的16位. cxBits 每个像素点颜色的位数 lpBits 指向颜色数据数组指针.每行的字节数必须是偶数个字节(不足时以0填充).如果该

移动端的视口/像素基本知识

一.屏幕尺寸 指屏幕对角线的长度,单位是英寸,1英寸=2.54cm 二.屏幕分辨率(物理像素) 指在横纵方向上的像素点,单位是px,1px=1个像素点.这里的1像素指的是设备的1个物理像素点.如第一点中的图,iphone6的分辨率为750*1334px,即是横向上有750个物理像素点,纵向上有1334个物理像素点.  三.像素密度(pixels per inch,PPI) 屏幕上每英寸可以显示的像素点的数量,单位ppi:屏幕像素密度与屏幕尺寸和屏幕分辨率有关.以上图的iphone6的为例: 开方

浅谈一下web移动端基本

屏幕尺寸.屏幕分辨率.屏幕像素密度 屏幕尺寸: 指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米. 常见的屏幕尺寸有2.4.2.8.3.5.3.7.4.2.5.0.5.5.6.0等. 屏幕分辨率:(iphone6 750*1334) 指在横纵向上的像素点数,单位是px,1px=1个像素点.一般以纵向像素*横向像素来表示一个手机的分辨率, 如1960*1080.(这里的1像素指的是物理设备的1个像素点) 屏幕像素密度/像素密度/屏幕密度: 屏幕上每英寸可以显示的像素点的数量,单位是ppi,即