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

고해상도 이미지 로딩 및 저장하기

0 추천
고해상도 이미지를 로딩 및 가공 후 손실없이 저장하고 싶은데, 계속 OOM이 발생합니다. 이미 Manifest 파일에는 largeHeap 설정을 해놓은 상황이라 더이상 힙 크기를 키울 수도 없는 상황인데요. 관련해서 구글링 해보니 허니컴 이전까지만해도 jni로 이미지를 로딩하면 native heap에 올려놓기 때문에 디바이스의 물리적인 메모리 한계까지 사용할 수 있었다고 하더군요. 물론 그에 따른 여러가지 문제가 발생할 수 있었지만요. 여기서 질문 드립니다.

1. 타겟 API가 아이스크림 샌드위치 이상인데, 이 버전에서는 native heap에 이미지를 올려놓을 수 있는 방법이 없나요?

2. 1번 방법 말고 혹시 고해상도 이미지를 로딩 및 저장할 수 있는 방법이 있다면 소개좀 해주실 수 있을까요?

감사합니다.
THK (2,360 포인트) 님이 2017년 4월 14일 질문

1개의 답변

+1 추천
 
채택된 답변
jni를 이용해서 c/c++로만 처리한다면 가능합니다.

java 쪽에서 Bitmap 객체로 처리해야 한다면 많이 어려울 겁니다.
익명사용자 님이 2017년 4월 14일 답변
THK님이 2017년 4월 14일 채택됨
위에서 언급했듯이, 관련 문서들을 참조해보면 jni로 native heap을 사용하는 것은 허니컴 이전 버전에서 가능하다고 하는데, 답변하신 의도가 허니컴 이후 버전도 가능하다는 건가요?
관련문서에서 언급하는 native heap은 아마도 Bitmap 객체 메모리 할당시 native heap을 사용할 수 있다는 의미일 겁니다.
c/c++ 코드를 직접 사용하면 Bitmap 객체 없이도 이미지 처리가 가능하며, 이경우 메모리 크기 제한을 받지 않습니다.
답변 감사합니다! jni 쪽으로 가닥을 잡아봐야될 것 같네요.
...