在android中更改图像颜色需要花费太多时间

时间:2013-01-10 06:17:33

标签: android

我试图在android中动态更改图像颜色。但这需要很长时间。

下面的功能用于改变颜色。

  public void greenColor(ImageView imageView,String fileName){
                System.out.println("in green color method");

             //initialize the Bitmap Object  

              Bitmap  bmp = BitmapFactory.decodeFile(fileName);
               //  Bitmap bmp = ((BitmapDrawable)imageView.getDrawable()).getBitmap();  
                //Guarantees that the image is decoded in the ARGB8888 format  
                bmp = bmp.copy(Bitmap.Config.ARGB_8888, true);  



                //Initialize the intArray with the same size as the number of pixels on the image  
                int[] intArray  = new int[bmp.getWidth()*bmp.getHeight()];  

                //copy pixel data from the Bitmap into the 'intArray' array  
                bmp.getPixels(intArray, 0, bmp.getWidth(), 0, 0, bmp.getWidth(), bmp.getHeight());  



                //replace the red pixels with yellow ones  
                try{
                    for (int i=0; i < intArray.length; i++)  
                    {  
                        //System.out.println("pixel value :"+intArray[i]);
                        //intArray[i] =  0xFFFF0000;  

                        if(intArray[i] == Color.WHITE)  
                        {  

                           System.out.println("color white ");
                        } else{
                            System.out.println(intArray[i]);
                            intArray[i]=Color.GREEN;
                        }
                    }  
                }catch(Exception e){
                    System.out.println("pixel error "+e);
                }


                //Initialize the bitmap, with the replaced color  
                bmp = Bitmap.createBitmap(intArray, bmp.getWidth(), bmp.getHeight(), Bitmap.Config.ARGB_8888);  

                //Draw the bitmap with the replaced color  
                imageView.setImageBitmap(bmp);  
               //----end color

        }

我已经尝试了很多并且进行了谷歌搜索,但我无法解决我的问题,

是否有任何技术可以减少android中的图像颜色更改时间?

请帮帮我......

1 个答案:

答案 0 :(得分:2)

在您的情况下,在将图像转换为二维数组并检查每个索引时花费时间。

因此,如果图像是2000 * 2000大小,那么想象一下你正在处理多少。 如果要更改alfa或色调,则应使用Bitmap API而不是手动执行。