티스토리 뷰


메타 데이터의 끝으로 건너뛰기

 

BitmapFactory.decodeXXXX function 들을 보면 똑같은 메소드가 2개씩 overloading 되어 있습니다.
같은 이름이지만 signature 가 다르죠. 마지막 parameter 로 BitmapFactory.Options 를 받느냐 안 받느냐의 차이죠.
이 BitmapFactory.Options 가 decode 를 하면서 옵션을 주는 녀석인데, 요놈이 Resize 와 관련이 있습니다.

BitmapFactory.Options 에도 여러가지가 있지만, Resize 쪽에서 꼭 봐야 할 옵션은 inSampleSize 입니다.
이 녀석은 decode 시 얼마만큼 줄여서 decoding 을 할지를 결정하는 옵션입니다.

inSampleSize 의 값은 다음과 같이 해석할 수 있습니다.
만약 inSampleSize = 4 라면. 4개의 픽셀을 한 픽셀로 쳐서 decode 해라.. 즉 1/4배 크기로 만들라는 이야기지요.

inSampleSize 옵션은 1보다 작은 값일때는 무조건 1로 ceil 되어 세팅됩니다. 1/1 = 1 배로 sample 하라는 의미이죠.
1보다 큰 값 값이 들어가면 1/N 배로 sample 하게 됩니다.
Tip 은.. decode 로직상 2의 지수의 값이 들어갈 때 가장 빠른 decode 속도를 보여준다고 합니다.
2, 4, 8, 16 ... 이런 숫자 말입니다.

2의 지수형태의 숫자가 아닐 때, 예를 들어 1/6 로 sampling 하고 싶을 때는 속도문제 때문에
inSampleSize = 6 을 주는 것보다, inSampleSize = 4 를 option 으로 주어 decoding 을 한 후.
Bitmap.createScaledBitmap() 메소드를 이용하여 한번 더 줄이는 것을 추천드립니다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함