Bitmap too large to be uploaded into a texture 에러 메시지

Posted by 빵빵빵
2015/03/13 15:18 전산(컴퓨터)/안드로이드



내가 경험한 메시지는 정확하게 이렇게 나온다.

W/OpenGLRenderer﹕ Bitmap too large to be uploaded into a texture (5100x4212, max=4096x4096)



안드로이드에서 ImageView 에다가 좀 해상도가 나가는(?) 이미지를 올리면 이런 메시지가 나오는 경우가 있다.

실제 이미지 사이즈는 4096x4096보다 훨씬 작은데도 말이다.
(나는 1700x1404 이었다 절반도 안되는데 막 이레... ㅡㅡ;)


황당한 것은 롤리팝(5.0)이 올라간 넥서스 5에서 퍽퍽 난다.... 죽지는 않고 이미지가 안나오고 흰 화면만 나올 뿐이다.

돌아버리는 줄알았다..

똑같은 apk를 프로요나 진저브레드에 설치해서 돌려보면 잘 돌아간다.

아놔... 이 시키들 뭘 바꾼겨??? 라는 생각을 했지만... 뭐... 갸들도 합리적이라 생각해서 뭔가를 바꿧겠지...



원인을 알아보자...

drawable 폴더에 있는 나의 이미지 파일은 drawable-mdpi 에 넣은거랑 동일하다.

왜??? 거기가 1dp == 1px 이니깐... 근데... 내 안드로이드 기기가 xxhdpi(1080x1920)이라면 mdpi 꺼를 확대해서 사용한다.

몇배???

3배!!! ㅡㅡ;;;;

나의 경우는 1700*3 x 1404*3 = 5100 x 4212 딱 맞다~ 에러 메시지에 나온 얼토당토 않은 초고해상도가 이렇게 나온 것이었다.

췟!!! 이게 뭐다냥...


이제 해결을 해보자

우선 완전 간단하게 해결 하는 방법 :
/drawable 에 있는 이미지 파일을 /drawable-nodpi 폴더로 이동한다.
폴더가 없으면 /drawable 와 같은 레벨에 만들면 된다. dpi를 적용하지 않는 이미지가 저장되는 파일들이다.
당근 xxhdpi 단말기에서도 확대를 하지 않고 그대로 쓴다.

해결은 당장 되지만 이미지의 퀄리티는 쫌 떨어져 보인다.


쬐끔 복잡하게 해결 하는 방법 :
drawable-mdpi, hdpi, xhdpi, xxhdpi 에다가 각각의 화면 단위에 맞게 이미지를 만들어 주는 것이다.
같은 이미지를 해상도를 달리하여 저장하는 작업이기 때문에 쫌 까다롭겠지만 괸찮은 퀄리티의 이미지를 보여줄 수 있다.

2015/03/13 15:18 2015/03/13 15:18

이 글에는 트랙백을 보낼 수 없습니다