2017-09-22 12 views
0

사진을 채우는 Android 앱을 만들려고합니다.Android 플러드 채우기 - 한 이미지에서 작동하지만 다른 이미지에서는 작동하지 않습니다.

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); 
     } 
    } 
} 

때문에 각도와 안티 앨리어싱, 어쩌면 약간의 압축 파일 — 일부 이미지 물건 — 모든 흰색 틱에 영역은 실제로 흰색입니다.
이미지 편집기에서 두 번째 이미지를 열고 (페인트 할 것임) 채워지지 않은 영역을 확대하고 색상 선택기를 사용하여 어떤 색상인지 확인합니다. 순수한 흰색은 아니야.

홍수 채우기 접근 방식을 작동 시키려면 채우기 영역에 대해 덜 엄격해야합니다. 모든 밝은 영역을 채울 것

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

.

+0

고마워요! 너는 많은 도움을 주었다. –