如何在android中的图像上应用不同的滤色器?

Posted

技术标签:

【中文标题】如何在android中的图像上应用不同的滤色器?【英文标题】:How to apply different colour filters on an image in android? 【发布时间】:2017-05-12 08:18:36 【问题描述】:

我不知道如何在图像上应用滤镜。

在这种情况下,我希望图像更暗(黑色,40% 透明度,图像顶部的图层会给我想要的结果)。但是,如果我知道如何在任何颜色的图像(具有一定的透明度)上放置一个图层以使其在视觉上与应用程序的其他 UI 元素更兼容,这将是有帮助的(将来)。

现在的样子。

我希望它在应用程序上的外观(上图已在 Adob​​e illustrator 中编辑,但如果我使用它,即使它的大小不大,应用程序也会反复崩溃)

另外,我怀疑在 android studio 中必须有一种方法可以做到这一点,而无需任何图像编辑软件。

如果我错了,请纠正我;)

【问题讨论】:

图片有背景和src属性或者使用ColorFilter android black color at 85% opacity的可能重复 不透明度见这个 - ***.com/a/17239853/7235539 【参考方案1】:

这就是我的工作,

 imageView =(ImageView) findViewById(R.id.image_view) ;
 imageView.getDrawable().setColorFilter(0x76ffffff, PorterDuff.Mode.MULTIPLY );

颜色范围 [0x00000000 -0xffffffff]

如果您不了解该模式,这可能会对您有所帮助

红色 - 0xffff0000

绿色-0xff00ff00

蓝色 - 0xff0000ff

您的请求平均黑色 0xff555555

根据需要更改颜色代码 > here

输出


更多:

setColorFilter 参数:(int 颜色, PorterDuff.Mode 模式)

What does PorterDuff.Mode mean

【讨论】:

您的here 链接已失效 @Charuka 非常感谢您花时间展示输出。欣赏!【参考方案2】:

您可以使用对象的android:foreground 属性为任何对象设置颜色。在这里,我使用ImageView 显示图像并使用android:foreground 放置过滤器!

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_main"
    android:layout_
    android:layout_>
<ImageView
    android:layout_
    android:layout_
    android:src="@drawable/yourImage"
    android:foreground="#60000000" />
</RelativeLayout>

如果您想在布局中执行此操作,请使用 android:background 属性而不是 android:src 作为图像源。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_main"
    android:layout_
    android:layout_
    android:background="@drawable/yourImage"
    android:foreground="#60000000">

</RelativeLayout>

【讨论】:

【参考方案3】:

使用任何在线工具为较暗的图像生成 9 个补丁图像,并在您的应用中使用该 9 个补丁。它会起作用的。

【讨论】:

【参考方案4】:

试试这个:

    <RelativeLayout
        android:layout_
        android:layout_>

        <ImageView
            android:layout_
            android:layout_
            android:background="@android:color/black"/>

        <ImageView
            android:layout_
            android:layout_
            android:alpha=".5"
            android:src="@drawable/your_naruto_img"/>

    </RelativeLayout>

当然,您可以通过更改android:alpha [0 - 1] 来相应地调整不透明度

希望这会有所帮助!

【讨论】:

不透明度和滤色器是完全不同的东西!【参考方案5】:

试试这个:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_
            android:layout_
            android:background="@drawable/your_drawable">

    <ImageView
        android:id="@+id/backImage"
        android:layout_
        android:layout_
        android:background="#66000000"
        android:scaleType="fitXY"/>
</RelativeLayout>

您可以将图像设置为RelativeLayout 的背景。使用imageview 标签并使用您要设置的transparent 颜色设置背景。

【讨论】:

请不要通过回滚我们的改进来破坏您的帖子。【参考方案6】:

对我有用的是

ImageView backgroundimage = FindViewById<ImageView>(Resource.Id.img_view);
backgroundimage.SetColorFilter(Color.Argb(200,0,0,0), PorterDuff.Mode.Overlay);

在尝试了以上所有答案之后。 希望它可以帮助某人。

【讨论】:

以上是关于如何在android中的图像上应用不同的滤色器?的主要内容,如果未能解决你的问题,请参考以下文章

更改屏幕的滤色器以与多台显示器一起使用

如何将滤色器应用于具有所有子项的视图

将滤色器添加到图像的暗部分,将另一个滤色器添加到图像的亮部分?

如何向图像添加滤色器,以使其平均 RGB 更接近该颜色?

css 背景CSS图像适合屏幕并具有滤色器

如何使用 GPUImageLibrary“减去”滤色器?