2016-09-21 91 views
-2

此代码遍历所有像素的图片会改变每个图像的RGB。当我运行代码时,大约需要1-2分钟才能完成。我认为这是由于整个循环完成了590万次。我将如何使这个过程更快,例如> 10秒或接近此。代码需要1分钟来处理

任何帮助表示赞赏。谢谢

int r,g,b,colour; 
int [] allpixels = new int [picture.getHeight() * picture.getWidth()]; 
picture.getPixels(allpixels, 0, picture.getWidth(), 0, 0, picture.getWidth(), picture.getHeight()); 

        for(int i = 0; i < allpixels.length; i++) 
        { 
         colour = allpixels[i]; 
         r = Color.red(colour); 
         b = Color.blue(colour); 
         g = Color.green(colour); 

         if(r < FIRSTSECTION){ 
          r = FIRST; 
         }else if(r >= SECONDSECTION && r < THIRDSECTION){ 
          r = SECOND; 
         }else if(r >= THIRDSECTION && r < FOURTHSECTION){ 
          r = THIRD; 
         }else if(r >= FOURTHSECTION && r < FIFTHSECTION){ 
          r = FORTH; 
         } 

         if(b < FIRSTSECTION){ 
          b = FIRST; 
         }else if(b >= SECONDSECTION && b < THIRDSECTION){ 
          b = SECOND; 
         }else if(b >= THIRDSECTION && b < FOURTHSECTION){ 
          b = THIRD; 
         }else if(b >= FOURTHSECTION && b < FIFTHSECTION){ 
          b = FORTH; 
         } 

         if(g < FIRSTSECTION){ 
          g = FIRST; 
         }else if(g >= SECONDSECTION && g < THIRDSECTION){ 
          g = SECOND; 
         }else if(g >= THIRDSECTION && g < FOURTHSECTION){ 
          g = THIRD; 
         }else if(g >= FOURTHSECTION && g < FIFTHSECTION){ 
          g = FORTH; 
         } 

         allpixels[i] = Color.argb(1, r, g, b); 

        } 

        Bitmap bitmap = Bitmap.createBitmap(picture.getWidth(), picture.getHeight(), Bitmap.Config.ARGB_8888); 
        bitmap.setPixels(allpixels, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight()); 
        drawableBitmap = new BitmapDrawable(getResources(), bitmap); 

回答