如何在 android 中实现像 photoshop 的平均模糊效果?

how to achieve effect like photoshop's average blur in android?

我想做一个类似photoshop的平均模糊的功能(滤镜>蓝色>平均)

但我尝试了类似从 android 中的图像获取平均颜色的方法, 但真的有问题。大多数图像变成黑色或灰色或白色。

有可用的库吗?或者是否有任何应用程序可以做到这一点?

效果就是这样

您可以使用此库对任何背景或图像进行模糊处理https://github.com/faradaj/BlurBehind

一个有趣的问题。答案不是直截了当的。

  1. 环顾四周,我发现了这篇文章:How does photoshop calculate the "average blur" (average color) of an image?
  2. 指向这篇文章,其中有代码:http://blog.soulwire.co.uk/code/actionscript-3/extract-average-colours-from-bitmapdata
  3. 这应该不难在 Android 上实现。
  4. 但是,我建议您不要在 Java 中执行此操作,这非常慢。而是在 RenderScript 上执行此操作,这是专为此类任务设计的 Google 技术 - 跨体系结构、高度优化的 C 代码来处理图形任务和图像处理。

如果您不喜欢从颜色值的平均值得到的颜色,您可以尝试 Android 的 Palette class。 class 用于根据图像的突出颜色生成调色板,以创建如下内容:

这必须从 UI 线程异步完成:

Palette.from(bitmap).generate(new PaletteAsyncListener() {
    public void onGenerated(Palette palette) {
        // Use generated palette
    }
});

您可以尝试 Palette class 中可用的不同方法(即 getVibrantColorgetMutedColorgetDarkVibrantColor 等),看看哪个returns 个你喜欢的值。