2017-09-22 28 views
0

我試圖製作一個填充圖片的android應用程序。這裏是洪水的白色區域中的代碼:Android Flood填充 - 適用於一個圖像,但不適用於不同的圖像

public class floodfill { 

    public void flood(Bitmap bitmap, int x, int y){ 

     int color; 
     int red; 
     int green; 
     int blue; 

     color = bitmap.getPixel(x,y); 

     red = Color.red(color); 
     green = Color.green(color); 
     blue = Color.blue(color); 

     if(red == 255){ 
      if(green == 255){ 
       if(blue == 255){ 
        bitmap.setPixel(x,y,Color.BLUE); 
       } 
      } 
     }else { 
      return; 
     } 

     flood(bitmap,x+1,y); 
     flood(bitmap,x-1,y); 
     flood(bitmap,x,y+1); 
     flood(bitmap,x,y-1); 
    } 
} 

使用this圖像,它只是罰款罷了(藍色是它在填寫。)

然而,當我使用this像它一樣。沒有填滿一切。

我怎麼能得到這個工作,所以它就像第一張照片一樣填充所有內容?謝謝!

回答

0

您的代碼將只填寫100%白色,rgb(255, 255, 255),或#FFFFFF,在這裏看到:

if(red == 255){ 
    if(green == 255){ 
     if(blue == 255){ 
      bitmap.setPixel(x,y,Color.BLUE); 
     } 
    } 
} 

由於角度和抗鋸齒,也許有些壓縮失真—一些形象的東西—並非所有白ISH地區實際上是白色的。
在圖像編輯器中打開你的第二張圖片(油漆會做)並放大那些未填充的區域,使用顏色選擇器來查看它是什麼顏色。這不會是純白的。

爲了使您的填充填充方法奏效,您必須對填充的區域不太嚴格,例如,

if (red >= 245 || green == 245 || blue == 245) { /* ... */ } 

這將填補所有明亮領域。

+0

謝謝!你幫了很多忙。 –