颜色ARGB学习

来源:互联网 发布:盒饭网络销售怎么做 编辑:程序博客网 时间:2024/06/08 09:39

1.图像概述

描述一幅图像需要使用图像的属性:分辨率、像素、大小、颜色、位深

  • 分辨率:每英寸图像内有多少个像素点,单位为PPI(Pixels Per Inch),通常叫做:像素每英寸。例如
  • 像素:当图片尺寸以像素为单位时,我们需要指定其固定的分辨率,才能将图片尺寸与现实中的实际尺寸相互转换。
    分辨率为72PPI,表示每英寸像素为72    1inch = 2.54cm    1cm约等于28像素    一幅分辨率为72的1×1英寸的图像,它包含的像素数目为5184,而一幅分辨率为300的同样大小的图像,它包含的像素数目则为90000
  • 像素深度:指存储每个像素所用的位数。像素深度决定彩色图像的每个像素可能有的颜色数
    8位色,每个像素所能显示的彩色数为2的8次方,即256种颜色。    16位增强色,16位彩色,每个像素所能显示的彩色数为2的16次方,即65536种颜色。    24位真彩色,每个像素所能显示的彩色数为24位,即2的24次方,约1680万种颜色。达到人眼分辨的极限.    32位真彩色,即在24位真彩色图像的基础上再增加一个表示图像透明度信息的Alpha通道。其实每个像素所能显示的彩色数也为24位,不过它增加了256阶颜色的灰度,为了方便称呼,就规定它为32位色
  • 真彩色:一幅彩色图像的每个像素值中,有R,G,B三个基色分量,每个基色分量直接决定显示设备的基色强度,这样产生的彩色称为真彩色。像素深度24位及以上的都是真彩。
若每个基色分量用8位,即RGB 8:8:8,那么一个像素共用24位表示,就说像素的深度为24,每个像素可以是16 777 216(2的24次方)种颜色中的一种
  • Alpha通道:是一个8位的灰度通道,该通道用256级灰度来记录图像中的透明度信息。
    一个像素深度为16位的图片,RGB 5∶5∶5,其最高位为Alpha,表示透明度,这时Alpha只能为1或0,0表示完全透明(图完全看不到),1表示不透明    一个像素深度为32位的图片,RGB 8:8:8,剩下的8位为Alpha,这时不仅表示透明还是不透明,还可以表示256级的半透明度,因为Alpha通道有8位可以有256种不同的数据表示可能性,0表示透明,255表示不透明

2.颜色

Color 类用于封装默认 sRGB 颜色空间中的颜色,或者用于封装由 颜色空间(ColorSpace )标识的任意颜色空间中的颜色。sRGB(standard Red GreenBlue)是通用色彩标准
颜色在Color类内部以int的形式存着:
24-31位表示alpha
16-23位表示R
8 - 15位表示G
0 - 7 位表示B

    Color.java    /**     * 如#aabbcc     * 则r=0xaa, g=0xbb,b=0xcc     */    public Color(int r, int g, int b) {        this(r, g, b, 255);    }    /**     * 0xffaabbcc     * 则r=0xaa, g=0xbb,b=0xcc, a = 0xff     * a & 0xff 确保a有8位,再左移24位,控制是否透明     * r & 0xff 确保a有8位,再左移16位,控制红色     * g & 0xff 确保a有8位,再左移16位,控制绿色     * b & 0xff 确保a有8位,再左移16位,控制蓝色     */    public Color(int r, int g, int b, int a) {        value = ((a & 0xFF) << 24) |                ((r & 0xFF) << 16) |                ((g & 0xFF) << 8)  |                ((b & 0xFF) << 0);        testColorValueRange(r,g,b,a);    }

3.实例

十六进制表示颜色1.白色:#FFFFFF  - R:FF; G:FF; B:FF2.红色:#FF0000  - R:FF; G:00; B:003.黑色:#000000  - R:00; G:00; B:00
 * corlor十六进制:ARGB<br> * A : 24-31位, alpha值定义了颜色的透明度,可用一个在 0.0-1.0或 0-255范围内的浮点值表示它,alpha为0.0或0表示完全透明, 1.0或 255表示完全不透明<br> * R : 16-23位,红色通道,256级亮度,同数字0.1.2...255表示<br> * G :  8-15位,绿色通道,256级亮度,同数字0.1.2...255表示<br> * B :  0- 7位,蓝色通道,256级亮度,同数字0.1.2...255表示<br> * <p> * 透明度不是用RGB值来控制的,而是依赖alpha值来控制<br> * 如果是透明,只要设置alpha为0,无论rgb是什么数值,都显示为透明(即完全看不见)<br> * 如果是不透明,需设置alpha为1或255,都显示为不透明<br> * <p> * 6位:  FFFFFF   - 就是RGB<br> *      0xFFFFFF - 白色, 0x000000 - 黑色, 0xFF0000 - 红色<br> * 8位:00FFFFFF - 头两位00就表示透明度,00表示完全透明,FF表示完全不透明<br> *      0x00****** - 表示透明色, 0xFF****** - 表示******本身的颜色
原创粉丝点击