• 转载于 抛物线

    • 色彩优化
    • setDitherboolean dither
    • setFilterBitmapboolean filter

转载于 抛物线

http://hencoder.com/ui-1-2/

色彩优化

Paint 的色彩优化有两个方法: setDither(boolean dither) 和 setFilterBitmap(boolean filter) 。它们的作用都是让画面颜色变得更加「顺眼」,但原理和使用场景是不同的。

setDither(boolean dither)

设置图像的抖动。

在介绍抖动之前,先来看一个猥琐男:

注意毛利小五郎脸上的红晕,它们并不是使用一片淡红色涂抹出来的,而是画了三道深色的红线。这三道深色红线放在脸上,给人的视觉效果就成了「淡淡的红晕」。

抖动的原理和这个类似。所谓抖动(注意,它就叫抖动,不是防抖动,也不是去抖动,有些人在翻译的时候自作主张地加了一个「防」字或者「去」字,这是不对的),是指把图像从较高色彩深度(即可用的颜色数)向较低色彩深度的区域绘制时,在图像中有意地插入噪点,通过有规律地扰乱图像来让图像对于肉眼更加真实的做法。

比如向 1 位色彩深度的区域中绘制灰色,由于 1 位深度只包含黑和白两种颜色,在默认情况下,即不加抖动的时候,只能选择向上或向下选择最接近灰色的白色或黑色来绘制,那么显示出来也只能是一片白或者一片黑。而加了抖动后,就可以绘制出让肉眼识别为灰色的效果了:

瞧,像上面这样,用黑白相间的方式来绘制,就可以骗过肉眼,让肉眼辨别为灰色了。

嗯?你说你看不出灰色,只看出黑白相间?没关系,那是因为像素颗粒太大,我把像素颗粒缩小,看到完整效果你就会发现变灰了:

这下变灰了吧?

什么,还没有变灰?那一定是你看图的姿势不对了。

不过,抖动可不只可以用在纯色的绘制。在实际的应用场景中,抖动更多的作用是在图像降低色彩深度绘制时,避免出现大片的色带与色块。效果盗一下维基百科的图:

看着很牛逼对吧?确实很牛逼,而且在 Android 里使用起来也很简单,一行代码就搞定:

paint.setDither(true);

不过对于现在(2017年)而言, setDither(dither) 已经没有当年那么实用了,因为现在的 Android 版本的绘制,默认的色彩深度已经是 32 位的 ARGB_8888 ,效果已经足够清晰了。只有当你向自建的 Bitmap 中绘制,并且选择 16 位色的 ARGB_4444 或者 RGB_565 的时候,开启它才会有比较明显的效果。

setFilterBitmap(boolean filter)

设置是否使用双线性过滤来绘制 Bitmap 。

图像在放大绘制的时候,默认使用的是最近邻插值过滤,这种算法简单,但会出现马赛克现象;而如果开启了双线性过滤,就可以让结果图像显得更加平滑。效果依然盗维基百科的图:

牛逼吧?而且它的使用同样也很简单:

paint.setFilterBitmap(true);  

加上这一行,在放大绘制 Bitmap 的时候就会使用双线性过滤了。

以上就是 Paint 的两个色彩优化的方法: setDither(dither) ,设置抖动来优化色彩深度降低时的绘制效果; setFilterBitmap(filterBitmap) ,设置双线性过滤来优化 Bitmap 放大绘制的效果。

Android Paint 色彩一些偏知识相关推荐

  1. 可能是最详细的Android图片压缩原理分析(一)—— Android图片压缩必备基础知识

    本篇文章已授权微信公众号guolin_blog(郭霖)独家发布 稀土掘金链接 前言: 最近在研究图片压缩原理,看了大量资料,从上层尺寸压缩.质量压缩原理到下层的哈夫曼压缩,走成华大道,然后去二仙桥,全 ...

  2. android 最全 图片相关知识整理

    android 最全 图片相关知识整理 图片基础知识梳理 图片基础知识梳理(1) - ImageView 的 ScaleType 属性解析 图片基础知识梳理(2) - Bitmap 占用内存分析 图片 ...

  3. Android camera(4)---Android Camera开发之基础知识篇

    Android Camera开发之基础知识篇 转自:https://blog.csdn.net/feiduclear_up/article/details/51968975#jump5 概述 Andr ...

  4. Android自定义view之基础知识

    Android自定义view之基础知识 虽然Android已经自带了很多实用的view和layout,加以调教能实现很美观的界面,但是有一些情况下,需要实现特殊的界面效果,比如我们比较熟悉的各种播放器 ...

  5. 开发一款高端大气上档次的android应用需要必备的知识——记于2013年末

    Android入门还是很简单的,看两本书,翻阅几篇文章,搭建了开发环境就算入门了.可是怎样开发一款完备的android应用呢,开发一款高端的android应用又需要那些知识呢,作者根据几年的开发经验做 ...

  6. 做Android开发 需要掌握哪些知识

    . 随着Android平台被广泛推广以来,越来越多的人进入到了Android开发行业.有人认为,Android开发市场已经饱和,不适合发展,但是蓝鸥小编认为,优秀的android开发工程师和普通的还是 ...

  7. android字体图形绘制,android paint api drawText 绘制字体字形

    android paint 的里面有很多属性设置的方法,我们来了解一下: Paint paint = new Paint(); // 设置字体颜色 paint.setColor(Color.RED); ...

  8. Android Paint 绘制空心渐变圆角矩形

    Android Paint 绘制空心渐变圆角矩形 在onDraw()中使用Paint绘制空心的圆角矩形 代码 @Overrideprotected void onDraw(Canvas canvas) ...

  9. Android DRM框架与基础知识

    Android DRM框架与基础知识 Android DRM框架 DRM框架的目的:能让安卓设备可以播放更多的内容,不同的内容和硬件设备可能使用的是不同的内容版权保护机制或者没有版权管理机制,但是安卓 ...

  10. 色彩学基础知识(转)

    源:色彩学基础知识 加法混色  采用红(Red).绿(Green).蓝(Blue)三种色光进行混色来显示其他颜色.色光越混合越亮,因此称为加法混色.电视.电脑的显示就采用加法混色原理. 红(R)绿(G ...

最新文章

  1. windows下git bash乱码问题
  2. 关于selinux排错
  3. vue-electron 写一个markdown文章编辑器(一)
  4. 这是波士顿动力机器狗「他爸」?美军80年代机器狗「考古」,身高3米,人机联合操作...
  5. 一起来啃书——PHP看书
  6. Python爬虫抓取页面内容
  7. h2 sync mysql_solo 从 h2 迁移到 mysql
  8. WIN7(VISTA)系统无法上网问题排查方法
  9. mysql 批量数据循环插入
  10. 2021-09-0723. 合并K个升序链表
  11. 【03】AngularJS 简介
  12. 精益+敏捷,两大管理思路让研发效能「飞」起来
  13. Python:监控键盘输入、鼠标操作,并将捕获到的信息记录到文件中 (转)
  14. Android打开第三方地图使用方法
  15. Exec format error问题的原因
  16. 从制造中来到制造中去 华为要做更懂制造的“懂行人”
  17. 4.28 前端开发日报
  18. 微软学术搜索新特征暴光
  19. 【金猿产品展】Wyn Enterprise——嵌入式商业智能软件,让数据分析无处不在
  20. windows7你的计算机无法启动,Windows7旗舰版启动不了怎么办?电脑无法正常启动Windows7解决方法...

热门文章

  1. 服务器托管双线技术方案
  2. matlab如何调整顺时针逆时针,关于算法:确定线段的方向是顺时针还是逆时针
  3. 关于阿里直播 安卓手机支付宝不支持的处理
  4. 用DEV-C++制作狼人杀
  5. 盛格塾丨品鉴《金石录后序》
  6. java cnzz_cnzz 模拟请求登录(传入url get data ) demo
  7. Django之路由配置(url与path及re_path区别)
  8. ASP.NET免费发送邮件|
  9. rss订阅,全文阅读,渴望大家发贴的时候在RSS中总是显示全文
  10. 操作系统 银行家算法 安全性检查