- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
下面的函数成功改变了图片的对比度和亮度。
Bitmap bmp;
ImageView alteredImageView;
...
public void drawAlteredImage(float contr,float bright) {
Bitmap alteredBitmap = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), bmp.getConfig());
Canvas canvas = new Canvas(alteredBitmap);
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.set(new float[] {
contr, 0, 0, 0, bright,
0, contr, 0, 0, bright,
0, 0, contr, 0, bright,
0, 0, 0, 1, 0 });
paint.setColorFilter(new ColorMatrixColorFilter(cm));
Matrix matrix = new Matrix();
canvas.drawBitmap(bmp, matrix, paint);
alteredImageView.setImageBitmap(alteredBitmap);
}
但是当我将 setSaturation 方法添加到 ColorMatrix 时,对比度和亮度更改停止工作。代码:
public void drawAlteredImage(float contr,float bright,float satur) {
Bitmap alteredBitmap = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), bmp.getConfig());
Canvas canvas = new Canvas(alteredBitmap);
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.set(new float[] {
contr, 0, 0, 0, bright,
0, contr, 0, 0, bright,
0, 0, contr, 0, bright,
0, 0, 0, 1, 0 });
cm.setSaturation(satur);
paint.setColorFilter(new ColorMatrixColorFilter(cm));
Matrix matrix = new Matrix();
canvas.drawBitmap(bmp, matrix, paint);
alteredImageView.setImageBitmap(alteredBitmap);
}
在这种情况下仅应用饱和效果。为什么会出现这个问题?我该如何解决?
最佳答案
setSaturation(...)
方法替换矩阵中的所有值。您可以创建一个结合了这两种操作的矩阵,或者使用两个单独的 drawBitmap(...)
调用来执行这些操作。
尝试:
cm.setSaturation(satur);
final float m[] = cm.getArray();
final float c = contr;
cm.set(new float[] {
m[ 0] * c, m[ 1] * c, m[ 2] * c, m[ 3] * c, m[ 4] * c + bright,
m[ 5] * c, m[ 6] * c, m[ 7] * c, m[ 8] * c, m[ 9] * c + bright,
m[10] * c, m[11] * c, m[12] * c, m[13] * c, m[14] * c + bright,
m[15] , m[16] , m[17] , m[18] , m[19] });
关于android - 同时设置 Saturation 和 ColorFilter 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7413867/
关于 ColorFilter() 函数的一个简短问题;我正在尝试用新颜色替换图像的特定颜色: 默认: 结果: 所以在这个例子中我只想用蓝色替换红色。但不要修改该图像的黑色。 目前我正在使用以下代码:
好的,所以这与我之前关于 ColorMatrixColorFilter 的问题有些相关,但我觉得这是一个截然不同的问题。我想知道是否有办法 - 或者更确切地说,如何扩展 ColorFilter 类来创
我的工具栏上有一个圆形的 ProgressBar 来显示一些不确定的进度,但是 ProgressBar 的默认样式(我知道的唯一一个使它变成圆环的样式)与工具栏的颜色相同('colorPrimary
我正在尝试解决 android ColorFilters 的问题。文档很差,所以主要方法是尝试不同的变体。 问题: 有一个位图。一些像素的 alpha=255,其他像素的 alpha=0。我正在尝试绘
如何在 View 上删除或撤消 ColorFilter 或 setColorFilter? 最佳答案 您可以为调用 setColorFilter() 的同一对象调用 clearColorFilter(
今天我试着让我的 ListView 更动态一点。所以我创建了一个白色的 ninepatch-image 并使用 .setColorFilter 方法添加了一个滤色器。那不是问题。但是在应用这个之后,每
下面的函数成功改变了图片的对比度和亮度。 Bitmap bmp; ImageView alteredImageView; ... public void drawAlteredImage(float
我正在将 ColorFilter 应用于 Drawable 我想知道是否可以更改 drawable 的颜色但保留其中的阴影。 像这样: 如果你应用了类似的东西: view.getBackground(
我正在创建一些日历 View ,我想做的是为可点击的 LineairLayout 创建背景。 因此我创建了一个带有两张图片的 StateListDrawable: 背景图片 按下项目时的图像 到目前为
我有一个自定义 ImageView ,它应该可以通过编程方式或从布局中设置图标的颜色。这行得通。 假设我在黑色背景上使用了一个白色图标。 然后,如果在应用程序的另一个地方可以绘制相同的图标并反转颜色,
这就是我要画的。它有 我想要的形状(来自四个 [x/y] 坐标) 我想要的纹理(来自 bmp) 我想要的颜色(使用 ColorFilter)。 最佳答案 在程序上,这就是我最终实现目标的方式: Pat
我想在我的游戏中同时显示两辆不同颜色的汽车(比如红色和蓝色),为此我使用相同的 LayerDrawable(设置为图像两辆车的 ImageView 资源: 问题是,
我正在使用以下代码在我的一个 ImageView 上设置 ColorFilter:- views.setInt(myView, "setColorFilter", myColour); 有什么方法可以
我试图在我之前也应用过滤色器的 GridView 中获取 ImageView 的颜色。我在 Nexus 4 上运行 4.2.2 我正在像这样改变 ImageView 的颜色。在我应用滤镜之前,图像的实
我有一个带有一些菜单项的 Activity,为此我更改了图标颜色,如下所示: private void colorMenuItem(MenuItem item) { if (item != nul
我有一个 ImageView,其中 android:src 设置为 ShapedDrawable,即白色圆圈。我想要的是在运行时为这个 ImageView 着色以响应某些事件。 imgView.set
我想改变图像特定部分的亮度。我知道如何使用 ColorMatrix 更改图像的亮度(或色调)。但它将应用于整个图像。 我有一个 mask 文件(黑白图像)。我想仅在该 mask 的白色部分应用亮度变化
我似乎无法让 colorFilter Prop 与我的 .json 文件一起使用。 没有错误,但颜色显然没有改变。 我正在使用 BodyMovin 从 After Effects 导入 .json
我在 Android 5(api 21) 上使用 ImageView 时遇到奇怪的问题。当我在 xml 中设置 ImageView 色调颜色时,我无法在代码中更改它!!!我尝试了几种方法来以编程方式更
我在我的 GridView 中加载了一些图像,我想使用屏幕混合模式为它们应用微红色。 在我的适配器中我有这段代码: ImageView image = (ImageView) findViewById
我是一名优秀的程序员,十分优秀!