美文网首页
颜色相关与获取像素点的一些问题总结

颜色相关与获取像素点的一些问题总结

作者: Codes作业本 | 来源:发表于2020-04-18 17:02 被阅读0次

颜色的相关

0x|ff|ff00ff

  • 此为int类型的数据,0x便是颜色整数的标记,ff表示透明度,0x后面必须是8位的颜色表示

任何一种颜色的范围都是0到255(00到ff)

  • 00完全透明,ff完全不透明

  • 表达式顺序是“aabbggrr”,

其中“aa=alpha”(00到ff);“bb=blue”(00ff);“gg=green”(00到ff);“rr=red”(00到ff)

RGB888:(24位3字节)256,256,256,每个色彩值都是256(因为是从0开始,所以是0到255),

​ 每个颜色占8位

RGB565:(16位2字节)5位,6位,5位,每个颜色占2的5次方,2的6次方,2的5次方

​ 由于人眼对绿色分辨比较明显,所以G比其他多一个位是6

RGB8888:(32位4字节)所有四位的是有透明通道的

每个颜色8位:2的8次方=256,

每个颜色5位:2的5次方=32,

每个颜色6位:2的5次方=64,

0到255是代表量化的色彩的显示范围

如果显示位数的高地的区别是范围是相同的,区别在于细腻与粗糙的区别,

2的8次方是256 与 2的5次方是32


获取ImageView中某点的像素值

int pixel = mBitmap.getPixel(像素值x,像素值y);
//获取RGB颜色每个RGB的值
int redValue = Color.red(pixel);
int greenValue = Color.green(pixel);
int blueValue = Color.blue(pixel);
//将int类型转换成String类型
String hr = Integer.toHexString(redValue);
String hg = Integer.toHexString(greenValue);
String hb = Integer.toHexString(blueValue);
//可以直接拼接,就是16进制的颜色值
mSelectColor = "#" + hr + hg + hb;
//16进制颜色类型转换成int类型
Color.parseColor(mSelectColor)

BitmapFactory.Options options = new BitmapFactory.Options();
mBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.set_title, options);

options使用注意点:

  • 第一点
如果图片放入xxxhdpi时,inDensity的值就是640
1. ldpi       120
2. mdpi     160
3. hdpi         240
4. xhdpi        320
5. xxhdpi       480
6. xxxhdpi  640

上面的示例中是通过R.mipmap.set_title的方式获取,所以加载出来的bitmap即使没有设置缩放比例系数inDensity的值,得到的bitmap宽高也不是原始的大小。

由于是在xhdpi,xxhdpi,xxxhdpi中获取,所以获取到的bitmap时是自动按照默认的比例压缩

  • 第二点
options.inJustDecodeBounds = true;
options.outHeight
options.outWidth

如果图片是放入asset文件夹中的

通过此方法获取到的图片的宽高为原始的宽高(在没有设置缩放比例的前提下)

所以自定义view中加载图片时,需要注意的点是是否是原始图片bitmap还是有压缩过的bitmap

图片大小的计算方法就是:图片尺寸*


其他一些小总结:

关键词:色彩管理,颜色空间,sRGB,CMYK,LAB,YUV

相关文章

网友评论

      本文标题:颜色相关与获取像素点的一些问题总结

      本文链接:https://www.haomeiwen.com/subject/nftbvhtx.html