나의 플랫폼/안드로이드
[ Android ] 비트맵에 이미지나 뭔가를 그릴 때 뜨는 에러!
GsBOB
2011. 6. 3. 14:09
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);
....
간단하죠??^^