问题标签 [colorfilter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1313 浏览

android - Android 视频颜色调整

我正在开发一款 Android 应用程序,该应用程序允许用户制作短视频、对其应用有趣的效果并相互分享。首先,我正在寻找简单的颜色效果,如灰度、亮度、对比度、分离等。

通过使用可以在录制时应用颜色效果的相机类,所有这一切都将非常简单——至少大多数手机的相机都可以——我已经使用Camera.getParameters().getSupportedColorEffects();. 但问题是:我需要在录制完成后执行此操作:用户将打开一个视频,并在一组效果中进行选择以应用;然后将更改后的视频上传到共享服务器。

我无法为*的爱找到一个好方法来做到这一点。

Android 似乎没有在 sdk 中包含任何 videoutilities。可以做一些效果,但只有视频的android.media.effect package背景,其余的都是图像。在播放期间从视频视图的表面视图中提取位图不起作用,它只会返回全黑位图。似乎没有办法拦截存储和屏幕之间的数据流。并在那里应用效果。我已经开始研究使用 FFmpeg 库来解码视频文件,以便我可以访问数据,但这需要相当多的本机编码,并且还需要针对各种 CPU 架构进行单独编译,因此非常混乱。我认为相机可以应用这些效果(在 Sony LT26i 上:无、单声道、负片、日晒、棕褐色、色调分离),也许人们可以向录像机提供不是来自相机而是来自内存的视频流,并通过这种方式使用存储的视频文件?

有谁知道是否有一种很好的方法可以在录制视频后将效果应用于视频?

0 投票
1 回答
1340 浏览

android - ColorMatrixColorFilter 不影响小于 255 的 alpha 值

我有一个采用位图和颜色的方法,并将位图上的所有像素转换为该颜色,同时保持原始的 alpha 值。此外,该方法被编写为随着传入的颜色变暗,Bitmap 变得更透明而不是更暗。如果传入的颜色是完全黑色的,那么位图应该完全透明而不是黑色。

}

使位图透明存在问题。

如果我将颜色矩阵设置为如下所示,

整个位图应该完全透明。但是,这只有在原始位图根本没有透明度时才能正常工作。如果位图的所有像素只有 255 的 alpha 值,则结果是完全透明的。但是,如果位图有任何 alpha 值小于 255 的像素,则最终图像将不是透明的,但将具有与原始图像相同的 alpha 值。

谁能告诉我为什么?

提前致谢。

0 投票
1 回答
715 浏览

android - 使用 1) 纹理图像和 2) ColorFilter 绘制非矩形形状

在此处输入图像描述

这就是我想画的。它有

  • 我想要的形状(来自四个 [x/y] 坐标)
  • 我想要的纹理(来自 bmp)
  • 我想要的颜色(使用 ColorFilter)。
0 投票
1 回答
660 浏览

android - 带有颜色层的位图

我有一个 ImageView,我在其中放置了一个位图(左),有时我想看到带有半透明蓝色层的位图(右)。我尝试使用 ColorFilter(LightingColorFilter 和 PorterDuffColorFilter),但我得到深蓝色,如何使用 ColorFilter 或其他任何东西来做到这一点?

在此处输入图像描述

谢谢。

编辑(我试过这个和其他变种)

我尝试了不同的 mul,添加值并总是得到这个: 在此处输入图像描述

0 投票
2 回答
8287 浏览

android - Android 在带有遮罩的部分 imageView 上应用 colorMatrix colorFilter

我想改变图像某些部分的亮度。我知道如何使用 ColorMatrix 来改变图像的亮度(或色调)。但它将应用于整个图像。

我有一个蒙版文件(黑白图像)。我只想在该蒙版的白色部分应用亮度变化如何在 Android 中执行此操作?

下面是一个蒙版图像和我想要得到的结果。

在此处输入图像描述 在此处输入图像描述

0 投票
2 回答
1794 浏览

android - 在android中应用RGB颜色过滤器后如何将图像保存在sdcard中

目前我正在设计一个基于照片编辑的应用程序。在这样做时我遇到了一个问题,即

  1. 我已经通过这个链接浏览了一个教程“如何为图像应用 RGB 滤色器”,这个教程非常有用而且很好。
  2. 但问题是在对图像应用 RGB 滤色器后,我需要将更改后的图像保存在 sd 卡中。
  3. 我为此搜索了很多,但没有找到确切的东西。
  4. 他们中的许多人建议使用paint(),但我不知道如何使用它。
  5. 所以我的问题是“在对图像应用 RBG 着色后,我需要将该图像保存在 SD 卡中,但我没有找到如何去做”?
0 投票
1 回答
178 浏览

android - ColorMatrixColorFilter 不适用于自定义按钮背景

这个问题在某种意义上是对这篇文章的跟进,并且基于这篇文章中显示的解决方案。但无论如何,我会尝试以完整的方式询问它。

我有一个带有背景选择器的自定义按钮,该选择器由正常状态 Drawable 和按下状态 Drawable 组成。Drawables 颜色在方法onSizeChanged()中使用PorterDuffColorFilter

这部分工作正常。但我想通过更改@kcoppock 在他的帖子中指出的色调来改进颜色选择。

  • 我使用推荐的代码创建了一个ColorMatrixColorFIlter,我使用调试器在 Eclipse 中看到了矩阵,看起来还不错。
  • 当我尝试使用ColorMatrixColorFIlter而不是PorterDuffColorFilter按钮时,drawables 保持无色,就好像没有应用过滤器或没有效果一样。

第二个相关的问题:如何将选择器中的每个 Drawable 更改为不同的颜色?

编辑
更多信息,在使用调试器的代码之后,我看到了这个矩阵,色调偏移为 240 度(或 -120 度)(浮点数被剪裁到小数点后 3 位)

据我了解,该矩阵不在单位矩阵附近,您甚至可以看到每行总和恰好为 1,因此颜色应该发生变化。我应该在我的按钮上看到一些颜色变化。
此外,只是为了看到这个矩阵正在被采用,我对其进行了硬编码以删除 R 分量

然后我看到青色的按钮,这意味着过滤器正在工作,但我无法获得色调变化。

0 投票
1 回答
1782 浏览

android - 在 StateListDrawable 中应用颜色过滤器不起作用

我正在编写一个应用程序,我必须在其中进行一些即时图像突变。

我要做的是在屏幕上的某个地方放置一个drawable,给它一个可以动态更改的花哨颜色并使其可点击(使用StateListDrawable)。

对于动态的颜色变化,我正在考虑使用 PorterDuffColorFilter ,我将其应用于可绘制对象。但是,将可绘制对象添加到 StateListDrawable 似乎是一个坏主意,因为滤色器被删除了。但后来我想出了我在 SO 某处找到的这个解决方案:

这种工作,但有一个棘手的事情。下图是结果,而 R.drawable.my_drawable 是一个全黑的 PNG 文件,周围有 3px 透明边框。

问题...

如果我只是添加原始可绘制对象,我会得到一个全黑图像,侧面有一些透明像素,如下所示:

这是结果:

我想要的结果,但没有滤色器

所以我在想 oneCopy 位图或画布上的绘图可能有问题,所以我将代码更改为:

因此不再对drawable进行转换,只是将其作为位图读取并再次将其转换为drawable也会导致奇怪的结果:

也不好...

而我想要的只是应用了我的自定义颜色的第二张图像。

有谁知道为什么我会在图像的左右两侧得到奇怪的淡入淡出效果?

0 投票
2 回答
5042 浏览

android - 将许多颜色过滤器应用于同一个可绘制对象

我想将多个滤色器链式应用于可绘制对象。那可能吗?或者也许创建一个过滤器,它是我想要应用的过滤器的组合。

例如,我想:

0 投票
2 回答
1151 浏览

android - Android中的颜色替换器

我想替换图像中的颜色并将其分配给 imageview 我在 google 中搜索了很多时间,但仍然没有找到任何有用的资源。我在 java rgbimagefilter 中看到过,但是它没有在 android 中使用,所以我的输出除外下面的截图:

原始图像

在此处输入图像描述

将绿色替换为灰色后,如下图所示:

在此处输入图像描述

我知道基本的想法,比如读取图像每个像素比较 rgb 值,因为它的匹配替换为新颜色,但我不知道如何在 android 中以编程方式做到这一点。