본문 바로가기

나의 플랫폼/안드로이드

[ Android ] 비트맵에 이미지나 뭔가를 그릴 때 뜨는 에러!

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

java.lang.IllegalStateException: Immutable bitmap passed to Canvas constructor


Bitmap bitmap = BitmapFactory.decodeFile(..);
Canvas canvas = new Canvas(bitmap);

canvas.save();
canvas.drawbitmap(...);
...

canvas.restore();

위 와 같은 형식에 소스에서 디버깅을 하면 회색 네모상자의 에러가 나옵니다. 


BitmapFactory에서 불러온 이미지는 수정이 불가능 하다고 하네요.

크기나 뭐 옵션 같은 것은 줄 수 있겠지만요^^ 

그래서 똑같은 비트맵을 복사함으로써 해결이 됩니다.

Bitmap bitmap = BitmapFactory.decodeFile(..);
Bitmap copyBitmap = bitmap.copy(Bitmap.Config.ARGB_8888,true); 

 
아니면 새로운 비트맵을 생성 해서 그 속에 이미지랑 다른 것들도 함께 넣어버리는 것이지요.

Bitmap paletBmp = Bitmap.createBitmap(imgWidth, imgHeight, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(paletBmp);

.... 



간단하죠??^^