• 关于Bitmap像素颜色的判断


    android.graphics.Bitmap.Config是一个枚举类型,里面定义了位图的四种格式。通过名称可以大概判处出颜色的存储方式:

    • ALPHA_8:由一个字节表示的图像,是一种8位的位图
    • ARGB_4444:由两个字节来表示的图像,是一种16位的位图
    • ARGB_8888:由四个字节来表示的图像,是一种32位的位图
    • RGB_565:由两个字节来表示的图像,是一种16位的位图


    ALPHA_8,ARGB_4444,ARGB_8888都是透明的位图,也就是字母A代表的透明,各个颜色说占的字节推断如下:

    • ALPHA_8:只有一种透明单色表示,占8bit
    • ARGB_4444:四色表示,即A/R/G/B,4+4+4+4=16,表示每一种颜色占4bit
    • ARGB_8888:四色表示,即A/R/G/B,8+8+8+8=32,表示每一种颜色占8bit
    • RGB_565:三色表示,即R/G/B,5+6+5=16,三种颜色分别占5bit,6bit,5bit


    可以通过getPixel(x, y)来获取Bitmap位图指定坐标的像素值,该函数的返回值是一个int型,常见的返回值常量有:

    public static final int BLACK
    Constant Value: -16777216 (0xff000000)
     
    public static final int BLUE
    Constant Value: -16776961 (0xff0000ff)
     
    public static final int CYAN
    Constant Value: -16711681 (0xff00ffff)
     
    public static final int DKGRAY
    Constant Value: -12303292 (0xff444444)
     
    public static final int GRAY
    Constant Value: -7829368 (0xff888888)
     
    public static final int GREEN
    Constant Value: -16711936 (0xff00ff00)
     
    public static final int LTGRAY
    Constant Value: -3355444 (0xffcccccc)
     
    public static final int MAGENTA
    Constant Value: -65281 (0xffff00ff)
     
    public static final int RED
    Constant Value: -65536 (0xffff0000)
     
    public static final int TRANSPARENT
    Constant Value: 0 (0x00000000)
     
    public static final int WHITE
    Constant Value: -1 (0xffffffff)
     
    public static final int YELLOW
    Constant Value: -256 (0xffffff00)

    因此可以通过getPixel(x, y) == -1 来判断该像素是否为白色。

    如果要取出某一单色的值,则可以:

    int clr=  bitmap.getPixel(x, y); 
    int red = (clr & 0x00ff0000) >> 16; //取高两位
    int green = (clr & 0x0000ff00) >> 8; //取中两位
    int blue = clr & 0x000000ff; //取低两位

    反过来也可以自己设置某个像素的颜色:

    for (int i=0; i < pixels.length; i++) {
    int alpha = Color.alpha(pixels[i]);
    if (alpha != 0) {
    pixels[i] = Color.argb(alpha, red, green, blue);
    }
    }

    然后就可以通过setPixel()函数进行设置了。

    关于像素设置,还可以浏览这里:stackoverflow.com/questions/4251027/fast...ad-of-pixel-by-pixel

  • 相关阅读:
    ue4 socket
    ue4动画蓝图
    localStorage 用法
    关于textarea中换行、回车、空格的识别与处理
    git忽略某些文件提交
    动态加载js文件
    H5 App页面 绝对定位 软键盘弹出时顶起底部按钮
    Android软键盘弹出时把布局顶上去的解决方法
    javascript 事件委托 和jQuery事件绑定on、off 和one
    escape()、encodeURI()、encodeURIComponent()区别详解
  • 原文地址:https://www.cnblogs.com/wzc0066/p/2948176.html
Copyright © 2020-2023  润新知