设为首页 加入收藏

TOP

Android 获取图片的亮度
2014-11-24 12:40:08 来源: 作者: 【 】 浏览:0
Tags:Android 获取 图片 亮度

问题:现在有一个有背景的控件AA(比如ImageView、LinearLayout、ViewGroup或者其他的控件),现在想在这个控件上放置其他控件BB来显示当前的状态(比如Launcher中的屏幕指示器),控件AA的背景在程序中是可以动态修改的,如果AA的背景和BB的背景色很相近,BB的效果就不是很明显,不能很清楚的现实出当前AA的状态。


解决办法:获取到AA背景的RGB值,根据RGB值计算当前屏幕的亮度,为BB制作两套图片,分别为较亮的和较暗的,如果AA的亮度值比较高,则BB使用较暗的图片,如果AA的亮度值比较低,则BB使用较亮的图片,这样BB的作用就很明显。


代码如下:


代码解释:得到Drawable对象后转换为Bitmap(Drawable对象没有返回它RGB值的函数,Bitmap可以返回某个点的RGB值bitmap.getPixel),对当前区域取一些特定点获取其RGB值,bitmap.getPixel返回的是ARGB值,通过移位操作获取到R、G、B的值,使用亮度=0.229×R + 0.587*G + 0.114*B进行亮度值计算,将所有点的亮度值相加后取一个平均值,如果这个值比128大,则这个图片较亮,如果这个值比128小,则这个图比较暗。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android Widget 开发实例:桌面便.. 下一篇自己重写Android下的拥有拖拽功能..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++中智能指针的性能 (2025-12-25 03:49:29)
·如何用智能指针实现c (2025-12-25 03:49:27)
·如何在 C 语言中管理 (2025-12-25 03:20:14)
·C语言和内存管理有什 (2025-12-25 03:20:11)
·为什么C语言从不被淘 (2025-12-25 03:20:08)