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

그림 그리기, 수정기능 만들때 bitmap관리방법

0 추천
그림 그리기, 수정 기능을 만들고 있습니다.

여기서 그리는거에서 데이터에 따라 양이 달라지기 때문에 여러개의 Bitmap이 나오는데요.

이걸 또  수정을 해야하기 때문에 이 여러개의 Bitmap데이터를 가지고 있어야합니다.

 

여기서 고민인게, List<Bitmap> arr 처럼 비트맵을 리스트에 넣어두고 수정이 필요할때

리스트에서 가져와 쓰는게 좋을까요?

아니면 bitmap을 다만들었을때 image파일로 저장해두고 수정이 필요할때

Bitmap.decodeFile로 파일을 가져와 다시 비트맵을 만들어 쓰는게 좋을까요?

 

혹시나 OOM 때문에 그나마 좀 덜 부담이 되는 쪽으로 하고 싶어서요.

둘 중에 뭐가 더 좋을지 좀 알려주세요.

그림 그리기, 수정 기능에 더 좋은 방법이 있다면 그걸 알려주셔도 감사하겠습니다.
익명사용자 님이 2015년 2월 24일 질문

2개의 답변

0 추천
 
채택된 답변
그리기 중간중간의 비트맵을 저장하지 마시고, 그리기 각 액션을 코드화 해서 액션 자체를 저장하세요.

예를 들어, abcd.jpg 이미지를 하나 열어 10,10~100,100 까지의 선을 그린 경우,

abcd.jpg 이미지를 연다

=> <action name="loadImage" param="abcd.jpg"/>

10,10 ~ 100,100 까지 선을 그린다.

=> <action name="drawLine" param="10,10-100,100"/>

액션 전체를 파일로 저장하면 그것이 프로젝트 파일이 될 꺼구요.

=>

<project>

   <actions>

     <action name="loadImage" param="abcd.jpg"/>

     <action name="drawLine" param="10,10-100,100"/>

  </actions>

</project>

다시 편집 중간의 이미지를 구성하려면 프로젝트 파일을 열 각 액션을 처음부터 다시 PLAY하시면 됩니다.

이렇게 해야 나중에 Undo/Redo 등을 구현하기도 좋고 아무리 액션이 많아도 메모리도 많이 차지 하지 않습니다.
레오나 (3,290 포인트) 님이 2015년 2월 24일 답변
0 추천
List<Bitmap> arr

=> OOM의 주범이 되실것으로..

Bitmap.decodeFile로 파일을 가져와 다시 비트맵을 만들어 쓰는게 좋을까요

=> 오케이 땡큐써!!!

비트맵은 사용후 바로 리사이클해줘야 한다능....
nicehee (73,100 포인트) 님이 2015년 2월 24일 답변
...