利用Palette库来取得图片中的主要色彩

使用这个Android的开源库android-support-v7-palette。

  • 流程:
    得到一个bitmap,通过方法进行分析,取出LightVibrantSwatch,DarkVibrantSwatch,LightMutedSwatch,DarkMutedSwatch这些样本,然后得到rgb。

  • Palette这个类中提取以下突出的颜色:
    Vibrant (有活力)
    Vibrant dark(有活力 暗色)
    Vibrant light(有活力 亮色)
    Muted (柔和)
    Muted dark(柔和 暗色)
    Muted light(柔和 亮色)

  • 创建方法
        //目标bitmapBitmap bm =BitmapFactory.decodeResource(getResources(),R.drawable.kale);//方法1Palette.Builder builder = Palette.from(bm);Palette palette=builder.generate();//方法2   使用异步builder.generate(bitmap, new Palette.PaletteAsyncListener() {  @Override  public void onGenerated(Palette palette) {     // Here's your generated palette}    

Palette palette=Palette.generate() 等方法直接废弃掉了

  • 使用样本(swatch)

    • 创建完一个实例之后,我们还需要得到一种采集的样本(swatch),有6中样本(swatch):
      Palette.getVibrantSwatch()
      Palette.getDarkVibrantSwatch()
      Palette.getLightVibrantSwatch()
      Palette.getMutedSwatch()
      Palette.getDarkMutedSwatch()
      Palette.getLightMutedSwatch()
      List

getPopulation(): the amount of pixels which this swatch represents.
getRgb(): the RGB value of this color.
getHsl(): the HSL value of this color.
getBodyTextColor(): the RGB value of a text color which can be displayed on top of this color.
getTitleTextColor(): the RGB value of a text color which can be displayed on top of this color.

比如如果你的TextView 有个背景图片,要想让字体颜色能够和背景图片匹配,则使用getBodyTextColor()比较合适,getTitleTextColor()其实应该和getBodyTextColor()差不多

  • Size问题
    在上面的代码中,你可能注意到了可以设置palette的size。size越大,花费的时间越长,而越小,可以选择的色彩也越小。最佳的选择是根据image的用途:

    • 头像之类的,size最好在24-32之间;
    • 风景大图之类的 size差不多在8-16;
    • 默认是16.
  • 使用代码
Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.kale);Palette palette = Palette.generate(bm);if (palette.getLightVibrantSwatch() != null) {//需要注意的是`getVibrantSwatch()可能会返回一个null值,所以检查一下是必须的。//得到不同的样本,设置给imageview进行显示iv.setBackgroundColor(palette.getLightVibrantSwatch().getRgb());iv1.setBackgroundColor(palette.getDarkVibrantSwatch().getRgb());iv2.setBackgroundColor(palette.getLightMutedSwatch().getRgb());iv3.setBackgroundColor(palette.getDarkMutedSwatch().getRgb());}

Palette(调色板)相关推荐

  1. android palette组件用法,android Palette调色板使用详解

    Palette是一个可以从图片(Bitmap)中提取颜色的帮助类,可以使UI更加美观,根据图片动态的显示相应的颜色.现在最新的api是在版本22.0.0添加的,本篇文章也是使用的22.0.0的api版 ...

  2. Palette调色板

    一.什么是Palette 1.Palette:可以在一张图片里面分析出一些色彩特性:主色调.鲜艳的颜色.柔和颜色等等--比如: 引入v7里面的一个单独项目Palette: android.suppor ...

  3. 【Android+Kotlin】自适应CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout与Palette

    参考文档 CoordinatorLayout 完全解析 1.1 关于NestedScrollingParent2.NestedScrollingChild2接口目的 支持滑动嵌套类的父布局 这篇文的d ...

  4. 主题颜色提取 ——— Palette

    Palette 调色板 Palette 是 Android L SDK 中的新特性.可以使用 Palette 从图像中提取出突出的颜色(主色调),获取到颜色之后我们再将这个颜色值赋给 ActionBa ...

  5. Android 5.0 调色 Palette调色功能

    Palette非常好用,也非常好玩. Palette的作用是从图像中提取突出的颜色,这样我们可以根据提取到的色值把它赋给Toolbar,标题,状态栏等,可以使我们的整个界面色调统一,效果非常好看. P ...

  6. 30_Palette调色板

    Android基础汇总 #1 原理: Palette是一个类似调色板的工具类,根据传入的bitmap,提取出主体颜色,使得图片和颜色更加搭配,界面更协调. Palette 可以从一张图片中提取颜色,我 ...

  7. PowerDesigner palette 工具栏不见了,怎么找回

    Tools(工具栏)--customsize toolbars(自定义工具栏) palette(调色板)勾选:

  8. android palette组件用法,Android Material Design:使用Palette优化界面色彩搭配。

    我写过一篇博客介绍了常用Material Design控件的使用. http://www.jianshu.com/p/776cc6329fff 本想把大部分的Material Design的知识点写到 ...

  9. android palette组件用法,Android--Palette基本使用

    Palette是一个类似调色板的工具类,根据传入的bitmap,提取出主体颜色,使得图片和颜色更加搭配,界面更协调.Palette 可以从一张图片中提取颜色,我们可以把提取的颜色融入到App UI中, ...

  10. 使用Palette优化界面色彩搭配 Jetpack

    Palette 动态获取图片的某种颜色.作用请看下面动图 没有添加笔记 ,直接查看 原文:https://www.jianshu.com/p/dfa9aac6143d 我写过一篇博客介绍了常用Mate ...

最新文章

  1. 心得体悟帖---18、时间
  2. 第14章 结构和其他数据形式 14.12 typedef 简介
  3. 为什么说 Serverless 引领云的下一个十年?
  4. python 三元运算符求abc_python三元运算符实现方法
  5. 推荐 | 8 个 SpringBoot 精选项目
  6. python中lambda的使用
  7. 【算法设计】最大子矩阵问题
  8. 读书笔记:《人工智能》
  9. MCS-51的存储器结构
  10. ArcGIS为什么计算面积被禁用
  11. shell美元符_Linux Shell中的美元符号$ | 学步园
  12. node静态服务器tudo
  13. sharelist+RaiDriver将阿里云盘映射到本地磁盘
  14. 如果用户没上传头像,则为其设置默认用户头像
  15. mark mark mark
  16. 数字藏品交易平台开发 数字藏品交易网站开发
  17. JS日期格式转换时间戳,时间戳转换日期,获取当前天23:59:59,时间戳判断是否是今天
  18. 线性函数,C语言方式实现
  19. QT项目练习--砍多多校园二手交易平台(C++)
  20. 自定义LinearLayout实现淘宝详情页

热门文章

  1. 干货 | PCB电路板短路了!试试这六种检查方法
  2. vuedraggable实现组件拖拽,页面生成器?
  3. 【武汉加油!中国加油!】挑战七天 实现机器视觉检测有没有戴口罩系统——第一二三天
  4. fd证书无法导出_fd安装浏览器证书
  5. English trip M1 - AC11 May I Help You? 我能帮到你吗? Teacher:Lamb
  6. 为什么我们依然觉得AI换脸很“假”?
  7. 如何让学好计算机专业 李开复
  8. Python Wechaty 微信聊天机器人 padlocal协议搭建指南
  9. dockerfile制作自定义字体的java环境镜像
  10. 区块链加持,鉴定溯源双保险,科技赋能茅台老酒成零售数字化标杆