颜色Color.alpha()/Color.red()/Color.green()/Color.blue()/Color.argb() setPixel()/getPixel()
Posted Mars-xq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了颜色Color.alpha()/Color.red()/Color.green()/Color.blue()/Color.argb() setPixel()/getPixel()相关的知识,希望对你有一定的参考价值。
Color.alpha()/Color.red()/Color.green()/Color.blue()/Color.argb()
int alpha = Color.alpha(Color.RED);
int red = Color.red(Color.RED);
int green = Color.green(Color.RED);
int blue = Color.blue(Color.RED);
Log.e(TAG, "Color.RED===========> " + Color.RED);//-65536
Log.e(TAG, "alpha===========> " + alpha);//255
Log.e(TAG, "red=============> " + red);//255
Log.e(TAG, "green===========> " + green);//0
Log.e(TAG, "blue============> " + blue);//0
int argb = Color.argb(alpha, red, green, blue);
Log.e(TAG, "argb============> " + argb);//-65536
String hexColor = Integer.toHexString(argb); //十进制转16进制颜色
Log.e(TAG, "hexColor ==========>" + hexColor);
int alpha = Color.alpha(Color.BLACK);
int red = Color.red(Color.BLACK);
int green = Color.green(Color.BLACK);
int blue = Color.blue(Color.BLACK);
Log.e(TAG, "Color.BLACK===========> " + Color.BLACK);//-16777216
Log.e(TAG, "alpha===========> " + alpha);//255
Log.e(TAG, "red=============> " + red);//0
Log.e(TAG, "green===========> " + green);//0
Log.e(TAG, "blue============> " + blue);//0
int argb = Color.argb(alpha, red, green, blue);
Log.e(TAG, "argb============> " + argb);//-16777216
Bitmap.createBitmap() 与图片单位像素占用字节
Bitmap bitmap1 = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
Log.e(TAG, "ARGB_8888======>" + bitmap1.getByteCount());//4
Bitmap bitmap2 = Bitmap.createBitmap(1, 1, Bitmap.Config.RGB_565);
Log.e(TAG, "ARGB_565=======>" + bitmap2.getByteCount());//2
//1byte=8bit,打印两张图片所占的字节,得到的值分别为4和2。对应着32位和16位。
setPixel()/getPixel() : 获取bitmap的像素颜色
示例:
Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
bitmap.setPixel(0, 0, Color.RED);
int pixel = bitmap.getPixel(0, 0);//获取颜色值
Log.e(TAG, "pixel ==========>" + pixel);// pixel = -65536;
int a = Color.alpha(pixel);
int r = Color.red(pixel);
int g = Color.green(pixel);
int b = Color.blue(pixel);
Log.e(TAG, "a ==========>" + a);
Log.e(TAG, "r ==========>" + r);
Log.e(TAG, "g ==========>" + g);
Log.e(TAG, "b ==========>" + b);
//得到a : 255 , r : 255 , g : 0 , b : 0;
方法:
/**
* 将指定的@link Color写入x,y坐标处的位图(假设它是可变的)。
* 颜色必须是@link ColorSpace.Named#SRGB SRGB颜色空间中的非预乘ARGB值。
*
* @param x 要替换的像素的x坐标(0…宽度-1)
* @param y 要替换的像素的y坐标(0…高度-1)
* @param color 要写入位图的ARGB颜色
*
* @throws IllegalStateException 如果位图不可更改,@将引发IllegalStateException
* @throws IllegalArgumentException 如果x、y超出位图的边界。
*/
public void setPixel(int x, int y, @ColorInt int color)
/**
* 返回指定位置的@link Color。抛出异常如果x或y超出范围(负值或>=宽度或高度分别)。
* 返回的颜色是中的非预乘ARGB值@link ColorSpace.命名为#SRGB SRGB颜色空间。
*
* @param x x要返回的像素的x坐标(0…宽度-1)
* @param y 要返回的像素的y坐标(0…高度-1)
* @return 返回指定坐标处的argb@link Color
* @throws IllegalArgumentException 如果x,y超出位图的边界,@将抛出IllegalArgumentException
* @throws IllegalStateException
* 如果位图的配置为@link config#HARDWARE,则@throws IllegalStateException会引发非法状态异常
*/
@ColorInt
public int getPixel(int x, int y)
以上是关于颜色Color.alpha()/Color.red()/Color.green()/Color.blue()/Color.argb() setPixel()/getPixel()的主要内容,如果未能解决你的问题,请参考以下文章