如何在imageview上给出一个posterize效果?

时间:2013-06-05 05:03:05

标签: android android-layout image-processing

我正在尝试为imageview提供Photoshop海报效果。这是一个正常的图像。

enter image description here

应用海报效果后,它应如下所示,此效果取自pixlr image editor

enter image description here

我想以编程方式获得确切的效果。

我试过的是,我试图通过SaturationFilter效果获得类似效果,因为我无法找到android的海报化方法。

这是我的函数http://pastie.org/8007887

并且得到的图像,如下所示,看起来不像Photoshop的海报效果,我尝试过几个饱和度,但没有运气。我希望有人会以适当的方式指导我。

enter image description here

发现某种方式,http://developer.android.com/reference/android/media/effect/EffectFactory.html这里是一个分色效果的指导,这适用于Android API级别14,那么使用API​​级别< 14?

的设备呢?

3 个答案:

答案 0 :(得分:2)

有一个名为 JHLabs' Java Image Processing的好库。

它有许多可用的图像处理过滤器。我也在我的应用程序中使用该库。它也与Android非常兼容。

您还可以下载 source code 并运行示例应用程序。

JAR下载: http://www.jhlabs.com/ip/filters/Filters.zip

答案 1 :(得分:1)

您可以使用以下
 1. Android + Open CV
 2. Android + Openframeworks

http://www.openframeworks.cc/setup/android-eclipse/
查看样品  https://github.com/nkint/ofxPosterize

答案 2 :(得分:1)

您可以通过播放不同的源代码来应用此类效果

我建议您使用此网址并检查不同的效果https://xjaphx.wordpress.com/learning/tutorials/

我可以看到的最相关的功能如下所述,尝试根据您的需要进行修改

int width = mImage.getWidth();
        int height = mImage.getHeight();
        int[] pixels = new int[width * height];
        mImage.getPixels(pixels, 0, width, 0, 0, width, height);

        for(int x = 0; x < pixels.length; ++x) {
            pixels[x] = (pixels[x] == fromColor) ? targetColor : pixels[x];
        }

        Bitmap newImage = Bitmap.createBitmap(width, height, mImage.getConfig());
        newImage.setPixels(pixels, 0, width, 0, 0, width, height);

        return newImage;