图像处理效果耗时

时间:2011-11-29 23:34:08

标签: android image-processing

我在图像上应用了棕褐色效果,但是当我点击按钮应用它完成但在90秒后。

public static Bitmap effect(Bitmap src, int depth, double red, double green, double blue) 
{

        int width = src.getWidth();
        int height = src.getHeight();
        Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig());
        final double GS_RED = 0.3;
        final double GS_GREEN = 0.59;
        final double GS_BLUE = 0.11;

        int A, R, G, B;
        int pixel;


        for(int x = 0; x < width; ++x) {
            for(int y = 0; y < height; ++y) {

                pixel = src.getPixel(x, y);

                A = Color.alpha(pixel);             
                R = Color.red(pixel);
                G = Color.green(pixel);
                B = Color.blue(pixel);

                B = G = R = (int)(GS_RED * R + GS_GREEN * G + GS_BLUE * B);

                R += (depth * red);
                if(R > 255) { R = 255; }

                G += (depth * green);
                if(G > 255) { G = 255; }

                B += (depth * blue);
                if(B > 255) { B = 255; }
                bmOut.setPixel(x, y, Color.argb(A, R, G, B));
                   }}

    return bmOut;
}

2 个答案:

答案 0 :(得分:1)

哦,您似乎在我的博客上使用示例代码:http://xjaphx.wordpress.com/2011/06/21/image-processing-photography-sepia-toning-effect/ 这篇文章意味着演示如何实现算法,所以它肯定没有提到任何其他内容。

至于性能问题,我建议:

  1. 如果您在应用程序级别(Java代码..)下开发,请使用getPixels() setPixels()并操纵二维数组。好吧,在这个棕褐色调中,它可能在模拟器上只有5-10秒,在真实设备上它可能是3秒。

  2. 最好在NDK上完成所有图像处理工作(比如创建图像处理库..),处理速度会快得多。

  3. 无论如何,玩得开心!

答案 1 :(得分:0)

你可以在桌面上放置一个半透明的橙色/黄色矩形,它可以达到与上面代码相​​同的效果,你不必担心处理时间,毕竟你使用的是手机。

它没有解决你的问题,但它也没有分析和操纵每个像素颜色,你唯一的问题是保存生成的图像,但这是以类似的方式完成