热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android图片特效之取主色

有时候在布置界面的时候,配色的好坏直接关系到一个应用的美观和用户体验。如果能够自动产生一种配色使得背景与图片融为一体,那就再好不过了。而且目前,网上也有累似的功能的开源项目,可以顺手拈来。比如:

有时候在布置界面的时候,配色的好坏直接关系到一个应用的美观和用户体验。如果能够自动产生一种配色使得背景与图片融为一体,那就再好不过了。而且目前,网上也有累似的功能的开源项目,可以顺手拈来。比如:

https://github.com/MichaelEvans/ColorArt这里面就可以取bitmap中的包括背景色在内的多种颜色,而且效果也不错。但是,一旦图片边缘有透明的情况下,去背景色就不准了,因为我们不需要透明的颜色。

还比如:https://github.com/thiagokimo/Alexei这里也有提供去的主色调的功能,尽管,去主色调没有取得背景色调来得好,但是,已经相当不错了。但显然,这个库在有透明度的图片面前也显得不够优秀。

我最总选择了第三种,就是我接下来也说的着一种:

    private int colorFromBitmap(Bitmap bitmap) {
        // Author of Palette recommends using 24 colors when analyzing profile photos.
        final int NUMBER_OF_PALETTE_COLORS = 24;
        final Palette palette = Palette.generate(bitmap, NUMBER_OF_PALETTE_COLORS);
        if (palette != null && palette.getVibrantSwatch() != null) {
            return palette.getVibrantSwatch().getRgb();
        }
        return 0;
    }
这种方法要用到Palette这个类,这个类是superV7包里的类,所以,使用这个类的需要导入V7的包,但是,这个包也并不是完美的,至少也存在某些图片时,取色没能很好的搭配背景。但是,我经过大量的测试发现,在大量的图片中出现的频率相对较低。当然,我后来做了一些调整。我在原来颜色的基础上对颜色的色相做了一定的处理,是的尽可能的看起来更加融洽。

以上三中选色方法,可以根据需要不同进行自行选择。当然,我个人觉得,如果图片没有大量透明度的情况下,ColorArt我认为是最优秀的。


推荐阅读
  • Unity Graphic功能,实现UGUI上三角形,四边形,圆环的绘制
    前言这篇简单的纪录下利用Graphic类,实现UGUI圆环的绘制。效果图如下:github目录:https:github.comluck ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Android Bitmap 缓存策略
    Android中最常用到缓存的地方就是图片,通过过缓存即可以提高应用程序的效率,又可以节省用户的流量。图片的缓存简单来说可以分为SD卡缓存和内存缓存,也可以俩者配合使用。Andr ... [详细]
  • 白话计算机图形学初步-由一个小问题引发的故事
    一、为何写本文  今天在学习android时遇到的一个问题:android程序从网络得到一张图片,显示在程序的imageview中,期间调用了bitmap把字节数组转化成位图文件,才能 ... [详细]
  • Android中Bitmap与Drawable的区别有哪些?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更 ... [详细]
  • Android 性能优化系列之bitmap图片优化
    在日常开发的APP,大部分时候需要想用户展示图片信息,图片最终对应Android中的Bitmap对象。而对于APP端来说Bitmap又是一个比较麻烦的问题,主要表现在Bitmap是非常占用内存的对象,处理不当将导致APP运行卡顿甚至出现OOM ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 本文讲述了CodeForces1016C题目的解法。文章首先介绍了一种错误的理解,然后给出了正确的解法。其中,当位于一个角上时,有两种选择,一种是先一直走一行再返回来走,另一种是走到这一列的另一行上然后再往右走一列。作者给出了两种解法,一种是直接计算,一种是动态规划。最后,取两种解法的最优解作为答案。文章附上了源代码。 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • POJ 1046 Color Me Less
    ColorMeLessTimeLimit: 1000MS MemoryLimit: 10000KTotalSubmissions: 31449 Accept ... [详细]
  • 开发笔记:Flutter学习笔记仿闲鱼底部导航栏带有中间凸起图标
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Flutter学习笔记--仿闲鱼底部导航栏带有中间凸起图标相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Android大图片裁剪终极解决方案(上:原理分析)
    转载声明:Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激!:-)http:blog.csdn.netfloodingfirearticledetails ... [详细]
  • 文章目录1.数据结构的定义2.查询方法的实现3.修改方法的实现        在Java中使用byte[]字节数组来储存bit,1byte=8bit。对于bit中的第i位,该bit ... [详细]
  • 网上有很多解决android加载bitmap内存溢出的方法,搜了一圈做下整理总结。项目里需求是拍摄多图之后上传,部分手机会内存溢出。常用一种解决方法:即将载入的图片缩小,这种方式以牺牲图片的质量为代价 ... [详细]
  • 从具有确切位置的两个imageView创建位图 - Create bitmap from two imageView with exact location
    MyTarget:Getonephotofromcameraorgallery,thensetittoimageViewA从相机或图库中获取一张照片,然后将其设置 ... [详细]
author-avatar
沉佩颖岳玲
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有