마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이미지에서 특정색 변경

0 추천

안녕하세요 

이미지를 가져와서 흰색부분을 다 다른색으로 변경하고싶은데요 픽셀하나하나 다계산해서 화이트부분을 다 레드로 변경했는데요.

안티엘리어싱때문인지 WHILE부분만 딱 사라지고 경계선부분들은 색이 변경되지 않아서 이상하게 됩니다.

포토샵에서는 허용치32정도 주고 페인트 도구이용하며 ㄴ거의 깔끔하게 되는데 말이죠 그정도 효과를 내려면 어떻게 해야하나요.

좋은 하루 되십시오.

 

  int[] pixels = new int[sW*sH];
        bitmap.getPixels(pixels,0,sW,0,0,sW,sH);
 
        for(int i = 0; i<pixels.length; i++){
            if(pixels[i] ==Color.WHITE ){
                pixels[i]= Color.RED;
            }
        }
 

 

흠바바 1 (4,000 포인트) 님이 2015년 4월 7일 질문

3개의 답변

0 추천
조건을 WHITE만 체크하면 순수한 컬러가 FFFFFF 인 경우만 바뀔테니

FEFEFE 이런 컬러는 바뀌지 않을겁니다 사람눈에 보기에는 저것도 하얀색인데

조건을 어느정도 허용 범위 내에 있는지 체크하는 조건으로 바꿔서 해보심이..
Gradler (109,780 포인트) 님이 2015년 4월 7일 답변
0 추천
요건 좀 생각해 보셔야 할거에요.

포토샵 페인트 도구는 수준높은 수학의 결과물입니다. rgb 200~255까지 일괄 변경 같이 간단히 해결되는 문제가 아니에요,

무엇보다 현재 흰색배경을 다른색으로 변경하고 싶으신거 같은데,, 흰색배경안에 있는 이미지에 변경하려는 범위내의 픽셀컬러값이 있으면 같이 변경되는것도 고려하셔야 하고,,

원본이미지의 컬러경계가 뚜렷하고, 단색으로 이루어진게 아니라면 경계가 지저분해진다던가 이미가 변질된다던가 하는 문제를 해결하는데는 많은 고민이 필요할듯 합니다.
이드로이드 (22,930 포인트) 님이 2015년 4월 7일 답변
그럼 어떤걸 이용해야 하나요 ㅜㅜ 라이브러리나 그런게 없나요
0 추천

배경색이 화이트 레드 두개밖에 없다면 애초에 이미지 두개를 준비하는게 좋지않을까요?

 

혹은 사용자가 커스텀해야하는것이고, 가용한 색이 많으며 배경만 바꿔야 한다면 배경이 투명인 이미지 하나 작업하시고, 그 이미지의 원래 크기 만큼의 화이트 배경을 하나 준비해서,

 

그 배경만 색 전체를 변경해주면 되지...않을까요?

위에 소스를 그대로 쓴다면 if문을 없애버리구요~

 

for(int i = 0; i<pixels.length; i++){
pixels[i]= Color.RED;
}


 

이런작업 안해봐서 그냥 의견만 드려봤어요~

핫샷 (1,180 포인트) 님이 2015년 4월 7일 답변
핫샷님이 2015년 4월 7일 수정
가용한 색이 많구요
배경으로 다른이미지를 넣어서 색을 바꾼다는건 리소스도 많이 먹고
400*400이면 중앙쯤에 이미지가 들어가고 그주위에 투명한이미지라서 그방법은 안될거같아요 이미지도 많구요 사람얼굴만드는 앱이라고 보시면되빈다 얼굴형이랑 머리스타일도 여러가지고 눈코입 다있거든요
...