안녕하세요.
안드로이드의 프레임워크에서 썸네일 가져오는 곳에서 이미지 크기 변환을 하는 곳에 버그가 있답니다.
예전엔 1.5때 발견했던 건데, 영어가 짧아서 버그 리포트를 못했었거든요.
지금 버전도 동일한 버그가 있더군요.
넥서스원, 넥서스 S, 디자이어등 안드로이드 소스를 그대로 가져다 쓴 것들은 모두 죽습니다.
폰이 죽는 것이 아니라 APP이 죽는것으로 보이니까 그냥 APP 버그구나 하고 넘어갔을 수도 있을 듯해요.
이미지를 1x800 처럼 세로가 좁고 긴 이미지를 넣어두고 안드로이드 갤러리 같은것을 보면
바로 OutOfMemory 뜨면서 죽는답니다.
이것보다 훨씬 큰 3264x2448 이미지드로 멀쩡히 불어 오는데요.
죽는 이유는 썸네일을 만들려고 스케일을 하면 곳에 버그가 있는데요.
썸네일을 96x96 으로 만드는데요.
1x800 -> 96x96 으로 만들때 스케일링 up을 할 지 down을 할지 판별하는 알고리즘이 바보같답니다.
if (source.width < source.height)
scale = source.width / 96;
else
scale = source.height / 96;
이렇게 되어 있답니다.
1x800 짜리는 스케일 96이 나오고
1 x 96 x 800 x 96 x 4 = 약 29M
이렇게 계산해서 메모리 할당을 시도 한답니다.
당연히 죽죠. ㅡ.ㅡ
이린식의 이미지가 있는 경우, 안드로이드의 표준 썸네일 가져오는 API로 호출하면 바로 죽어요.
OS를 수정한 폰들은 (예 삼성 갤럭시S) 괜찮은 경우가 있습니다.
참고하세요!




좋은 정보네요, 감사합니다.