2012-07-10 2 views
0

비트 맵을 다시 바이트로 변환 한 후 비트 맵을 생성했지만 비트 맵의 ​​크기는 원본에서 생성까지 다양합니다. 이유는 무엇입니까?바이트 크기를 사용하여 생성 된 비트 맵은 원본과 다릅니다.

원본 비트 맵의 ​​폭 : 284 높이 : 139

비트 맵 표본 크기 요인 : 2

변환 된 이미지의 폭 : 142 높이 : 69

사용 변환하려면 아래 코드 :

BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); 
     bitmapOptions.inSampleSize = powerOf2; 
     bitmapOptions.inPurgeable = true; 
     bitmapOptions.inInputShareable = true; 
bmp = BitmapFactory.decodeByteArray(imgRawBytes, 0, imgRawBytes.length, 
         bitmapOptions); 

답변

0

당신이 예상 한 행동입니다. bitmapOptions.inSampleSize = 2으로 설정하십시오. 사실, 문서에서 지적한대로, inSampeSize > 1 인 경우, 디코더는 원본 이미지를 서브 샘플링합니다. doc 가입일

: 값> 1로 설정된 경우

는, 메모리를 절약하기 위해 더 작은 이미지를 반환 원본 이미지를 서브 샘플링하는 디코더를 요구한다. 샘플 크기는 이며 디코딩 된 비트 맵에있는 픽셀 하나에 해당하는 두 차원의 픽셀 수입니다. 예를 들어, inSampleSize == 4는 원본의 너비/높이의 1/4이고 픽셀의 1/16 인 이미지를 반환합니다. 참고 : 디코더는이 요청을 수행하려고 시도하지만 결과 비트 맵은 요청 된 것과 정확히 다른 차원을 가질 수 있습니다. 또한 2의 거듭 제곱은 종종 디코더가 존경 받기 위해 더 빠르거나 쉬워집니다.

관련 문제