android:将灰度过滤器设置为imageView

Posted

技术标签:

【中文标题】android:将灰度过滤器设置为imageView【英文标题】:android:set gray scale filter to imageView 【发布时间】:2015-04-03 04:54:25 【问题描述】:

我使用这个library 在 imageView 上显示 svg 图像,我想用这个 imageView 显示锁定和解锁模式,当状态被锁定时,在灰度滤色器中显示 imageView。 类似css上的这段代码:

-webkit-filter: grayscale(100%); opacity: 0.5;

我该怎么做?有谁能够帮我 ? 谢谢

【问题讨论】:

【参考方案1】:

您应该能够使用以下方法使图像变为灰度和褪色:

public static void  setLocked(ImageView v)

    ColorMatrix matrix = new ColorMatrix();
    matrix.setSaturation(0);  //0 means grayscale
    ColorMatrixColorFilter cf = new ColorMatrixColorFilter(matrix);
    v.setColorFilter(cf);
    v.setImageAlpha(128);   // 128 = 0.5

并使用以下方法重置它:

public static void  setUnlocked(ImageView v)

    v.setColorFilter(null);
    v.setImageAlpha(255);

【讨论】:

啊。我担心可能是这种情况。您可以使用 svg-android (getSVGFromInputStream(is, searchColor, replaceColor)) 的替换颜色功能,或者您可能只需将 SVG 渲染为位图并将 ImageView 设置为使用它。 @PaulLeBeau 您可以使用clearColorFilter() 方法,该方法在内部执行您在solution 中所述的相同操作 @AkshayMukadam,是的,'clearColorFilter()' 效果很好,但它不会返回过滤器之前的确切旧颜色。谢谢。 @Kotdroid 那么你可以分享什么替代方式。请 @AkshayMukadam ,我还没有其他选择。但我使用了保罗的方式。而且运行良好。

以上是关于android:将灰度过滤器设置为imageView的主要内容,如果未能解决你的问题,请参考以下文章

将视频转换为单张图片(灰度)【MATLAB】

在 Android 中将位图转换为灰度

如何在android中将自定义过滤器应用于相机流?

使用 OpenCV 从 android Camera2 将 YUV 转换为 RGB ImageReader 时出现问题,输出图像为灰度

Spring微服务灰度发布(热部署)的实现(二)

如何将灰度图像中的轮廓值设置为该轮廓的最大值?