본문 바로가기

나의 플랫폼/안드로이드

[ Android ] ColorMask 사용하기

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
글로우 효과를 내거나 이미지에 발광 효과를 줄려고 할 때
사용하면 괜찮을 것 같아서 이렇게 글을 남깁니다.

Opengl es 같은 경우 자체적으로 diffuse(범위) 빛 효과 값을 이용하여 
글로우 효과를 표현하기도 하는 것 같은데요..

만약 랜더링 되지 않은 그냥 bitmap 파일을 글로우 효과를 낼려면..
어쩔수 없이 bitmap 자체를 변경 시켜줘야 한다는 게
몇일 간 조사한 저의 결과 였습니다.

bitmap변경은 다음과 같이 이용하였습니다.

// bitmap 소스를 받아온다.
Bitmap tmpbitmap = BitmapFactory.decodeStream(mContext.getResources().openRawResource(R.raw.lightmap));

tmpbitmap = Bitmap.createScaledBitmap(tmpbitmap, 256, 256, true);


Paint paint = new Paint();

int textureIndex = 0;

// 50개의 텍스처를 초기화 했습니다. 

for(float contrast = 0.0f ; textureIndex < 50 ; contrast += 0.1f,textureIndex++){
      // 컬러 매트릭스 생성 

      ColorMatrix cm = new ColorMatrix();

        
        // 컬러 캐트릭스를 적용 시킨 비트맵을 그릴 팔레트Bitmap 

        Bitmap paletBmp = Bitmap.createBitmap(tmpbitmap.getWidth(), tmpbitmap.getHeight(), Bitmap.Config.ARGB_8888);

        Canvas canvas = new Canvas(paletBmp);
 

        // contrast값이 높아 질수록 밝아진다. ( 글로우 효과일 경우 보이는 부분이 줄어드는 효과를 볼 수 있죠.)

      setContrastScaleOnly(cm, contrast);
 
      // 컬러 필터로 적용

        paint.setColorFilter(new ColorMatrixColorFilter(cm));

        canvas.save();

        canvas.drawBitmap(tmpbitmap, 0,0, paint);

        canvas.restore();

       

        mLightMapTexId[textureIndex] = loadTexture(paletBmp);

}

tmpbitmap.recycle();

tmpbitmap = null;

 

아마 글로우 효과를 내는데 제가 잘못 생각할 수도 있을 것 같네요..

혹시 다른 의견이나~~

괜찮은 생각 있으신 분~~~ 특히 Opengl es 2.0을 이용하는 방법이면

더욱 환영입니다.^^