android 调色板,所不了解的Android调色板

最近在做Android项目中有这样一个需求:在首页的每个Feed有一张图片,图片上有文字等其它属性,上面的属性随着图片颜色的不同做出相应的变化,保证属性都能够看得清。

解决方案:利用Android的Palette解析,官方文档这样介绍Palette

230c3aee28e3

Palette为解析图片而来

需要知道的是上面涉及到的Vibrant、Muted、Muted Light等都有可能会提取不到,所以我们必须保证拿到一个值作为标准,这时我们很有必要知道Palette(调色板)的原理。

调色板的简单原理:

PC机上 显示的图象是由一个个像素组成的,每个像素都有自己的颜色属性。在PC的显示系统中,像素的颜色是基于RGB模型的,每一个像素的颜色由红(B)、绿 (G)、蓝(B)三原色组合而成。每种原色用8位表示,这样一个的颜色就是24位的。以此推算,PC的SVGA适配器可以同时显示224约一千六百多万种颜色。24位的颜色通常被称作真彩色,用真彩色显示的图象可达到十分逼真的效果。但是,真彩色的显示需要大量的视频内存,一幅640×480的真彩色图象需要约1MB的视频内存。由于数据量大增,显示真彩色会使系统的整体性能迅速下降。原理图:

230c3aee28e3

调色板的工作原理

为了解决这个问题,计算机使用调色板来限制颜色的数目。调色板实际上是一个有256个表项的RGB颜色表,颜色表的每项是一个24位的RGB颜色值。使用调色板时,在视频内存中存储的不是的24位颜色值,而是调色板的4位或8位的索引。这样一来,显示器可同时显示的颜色被限制在256色以内,对系统资源的耗费大大降低了(不同时刻可以采用不同的调色板,因此可以扩展总共可以显示的颜色)。

显示器可以被设置成16、256、64K、真彩色等显示模式,前两种模式需要调色板。在16或256色模式下,程序必须将想要显示的颜色正确地设置到调色板中,这样才能显示出预期的颜色。图11.1显示了调色板的工作原理。使用调色板的一个好处是不必改变视频内存中的值,只需改变调色板的颜色项就可快速地改变一幅图象的颜色或灰度。

除此之外还要知道的一个知识点是

第一步:得到所要解析图片的BItmap

第二步:缩小Bitmap(提升性能)

第三步:异步方式提取Bitmap样本(Swatch)让样本的Color值尽量少,原因是我们主要想拿到HSL值中的Lightness明度值。

第四步:获取明度值Lightness,一般大于75%文字偏向与黑色,否则白色。

230c3aee28e3

最后配上代码

各位还请切磋赐教

2015/ 7/10 于北京   白袍君

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值