APP全局色彩饱和度修改

news/2024/11/8 4:34:07/

APP全局色彩饱和度修改

对以下两篇鸿洋大神的博文进行了实践,并记录对应的问题。
App 黑白化实现探索,有一行代码实现的方案吗?
App 黑白化实现探索2, 发现了一种更方便的方案,我被锤了!

第一篇
第一篇采用是比较常规的方法,即在View绘制的时候改变色彩饱和度,以ImageView为例,代码如下:

public class MyTextView extends ImageView {Paint mPaint = new Paint();public MyImageView(Context context) {super(context);init();}public MyImageView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);init();}public MyImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init();}private void init(){ColorMatrix cm = new ColorMatrix();cm.setSaturation(0);mPaint.setColorFilter(new ColorMatrixColorFilter(cm));}@Overrideprotected void onDraw(Canvas canvas) {canvas.saveLayer(null, mPaint, Canvas.ALL_SAVE_FLAG);super.onDraw(canvas);canvas.restore();}}

如果是ViewGroup类型的需要在dispatchDraw中也做处理。

第二篇
第二篇的方案比较取巧,而且不熟悉源码的话大概没那么容易想到。view.setLayerType(layerType, null);View的硬件加速方法第二个参数可以设置Paint,对Paint设置相应的属性即可达到效果,代码如下:

Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
mPaint.setColorFilter(new ColorMatrixColorFilter(cm));
view.setLayerType(View.LAYER_TYPE_HARDWARE, paint);

问题
1、第一种方法原文中提到对WebView、视频播放会有影响。
2、第一种方法我自己实践过程中发现View设置了Background会导致Background的饱和度不变,可能是我哪里需要再处理一下。
3、第二种方式我自己再实践过程中发现对视频拍摄有影响,会不断地闪。


http://www.ppmy.cn/news/311508.html

相关文章

理解图像中基本概念:色调、色相、饱和度、对比度、亮度

对比度: 对比度指不同颜色之间的差别。对比度越大,不同颜色之间的反差越大,即所谓黑白分明,对比度过大,图像就会显得很刺眼。对比度越小,不同颜色之间的反差就越小。 亮度: 亮度指照射在景物…

检测色卡饱和度和色彩偏差

简介 本篇讲解如何测24色卡的饱和度和色彩偏差。实现原理 主要是模仿imatest来实现,详细资料请参考:http://www.imatest.com/docs/colorcheck/ 具体做法:1、首先鼠标框选出色卡中24色所在位置,然后分别在对应色块中再取出小块矩形…

亮度对比度色调饱和度最佳_色彩三要素之—— “饱和度”

今天是色彩三要素最后一篇了,学起学起! 何为饱和度? 饱和度:色彩饱和度,可以理解为色彩的纯度,纯度越高,表现越鲜艳,纯度越低,表现越暗淡,简单来说就是色彩中灰色成分多少,这将直接影响了色彩的饱和度 。 再来看一张图⬇️

Android色彩特效处理之色调、饱和度、亮度、ColorMatrix精炼详解

一、前期基础知识储备 Bitmap(位图文件),扩展名可以是.bmp或者.dib。位图是Windows标准格式图形文件,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2、4、8、16、24和32位色彩。想象一下你…

色彩,饱和度,强度和对比度(HSIC)

Hue, Saturation, Intensity, and Contrast (HSIC) 色彩,饱和度,强度和对比度(HSIC) 1、Sunlight visibility improvement Improved contrast for multimedia content at the same power (backlight) level 阳光能见度提高 …

OpenCV - C++实战(07) — 色调、饱和度和亮度的色彩空间

目录 第7章 色调、饱和度和亮度的色彩空间 7.1 色度、饱和度和亮度的概念 7.2 图像HSV模型 7.3 通过HSV生成色彩特效 7.4 颜色用于肤色检测 7.5 完整代码 Github代码地址:GitHub - Qinong/OpenCV 第7章 色调、饱和度和亮度的色彩空间 RGB 是一种被广泛接受…

关于色彩饱和度调整

处理前效果图: 处理后效果:因为原图色彩饱和度实在太低,因此我传入了2次参数:numberN255 protected override void Adjust(ref byte BValue, ref byte GValue, ref byte RValue) {//郑斯彬原创算法,numberN表…

【OpenCV 例程300篇】205. 调节色彩平衡/饱和度/明度

OpenCV 例程200篇 总目录 201. 图像的颜色空间转换 202. 查表快速替换(cv.LUT) 203. 伪彩色图像处理 204. 图像的色彩风格滤镜 205. 调节色彩平衡/饱和度/明度 文章目录 【youcans 的 OpenCV 例程300篇】205. 调节色彩平衡/饱和度/明度4.3 自己调节色彩平…