图片像素基本知识

图片由像素组成,例如一张90x40的bmp(位图),就由90x40个像素组成。每个像素又由如干位(bit)组成,例如8bit、16bit、24bit,这个就是我们说的色深。计算机里的颜色一般用用得最普遍的RGB(红、绿、蓝)三色组成。现在用一个数值分别表示这三种颜色的亮度,例如范围为255,值越小就越黑,值越大就越亮,这样由3个0~255的数值混合可以组合成很多种颜色(这个叫做像素值,pixel)。这里就可以看到刚刚说范围是0~255,这样一种颜色就需要8bit(2^8),3种颜色就是24bit(3x8),这就是我们平常说的24色深。这样的颜色组合能够达到2^24=16777216种,已经达到人眼的分辨率极限。但是一般在嵌入式中,一般显示屏幕达不到这么高的颜色显示,现在一般带GUI的嵌入式产品的主流色深是16bit,就说分给RGB每个分量的位数不足8bit,这样有些颜色就会显示不出来。

不过大家在用的桌面操作系统的色深是32bit,那除了刚刚说的24bit用于RGB之外,还有8bit是用来干什么了咧?32bit的色深还有8bit用来表示alpha通道,这个通道用来表示颜色的透明度(alpha)。在8bit的情况下,数值越小透明度越高,0表示完全透明,255表示完全不透明。大家在网上看到的png格式的图片就是带alpha通道的。

这里再说说图片格式。bmp最高是24bit色深,bmp不带alpha通道信息,因此bmp本身不带透明信息。并且bmp是没有压缩过的图片格式,所以一般bmp格式的图片都比较大(这个很好理解:例如一张1024x768x24bit的bmp大小就是:1024x768x24/8x2^20=2.25MB)。无需外部库就支持bmp格式图片(因为直接读取它的数据就是图片信息,要不然怎么叫位图咧)。

jpg最高也是24bit的,同样也不带alpha通道信息,但是这种图片格式是经过压缩算法的,所以同样大小的图片,jpg格式的能比bmp格式的小得多。需要外部jpeg库才能支持这样格式的图片。

png图片,最高色深32bit,这个是带alpha通道信息的,而且也是经过压缩算法的,体检很小,所以网上那些透明的很好看的图片一般都是png的(又可以透明,体积又小)。同样需要外部png库才能支持这种格式。

gif么,我不太清楚,它一般是用于动画的,不过也可以用来表示静态图片(一帧动画不就是静态的么-_-||)。gif也可以带alpha通道。

转载:http://www.alaiblog.com/minigui/basic-knowledge-of-image-pixels.html

你可能感兴趣的:(图片)