2013-04-18 1 views
0

답변을 찾지 못하는 것 같습니다. 코드의 라인을 수행합니다Android BitmapFactory decodeStream()

final BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inJustDecodeBounds = true; 

    BitmapFactory.decodeStream(is, null, options); 

실제로 그 뜻을 해당 파일이 다운로드되고?

options.inSampleSize = calculateInSampleSize(options, reqWidth, 
      reqHeight); 

    // Decode bitmap with inSampleSize set 
    options.inJustDecodeBounds = false; 
    BitmapFactory.decodeStream(is, null, options); 

는 실제로 파일 작은 다운로드 것을 의미한다 (: inJustDecodeBounds와

디코드 = 실제 크기

하는가를 확인하기 위해 안드로이드 문서는 다음과 같이 말 은 원본 크기로 다운로드되지 않고 그 이후 작은 크기의 비트 맵으로 복사됩니다.

예 : 몇 가지 URL이 많은 2000 x 1500 이미지를 가리 킵니다. 이러한 파일을 디코딩하여 비트 맵에로드하면 전체 해상도 (2000 x 1500)로 파일을 다운로드 할 수있는 충분한 메모리가 있어야합니까 (200 x 150)의 축소판 만 필요합니까?

+0

난 당신이 서버가 매개 변수를 줄이고 크기를 제공하지 않는 한 전체 해상도 (X 1500 2000)를 다운로드해야합니다 생각합니다. – Abx

답변

0

실제로 파일이 다운로드되는 것처럼 보이고 effiency 부분은 메모리에로드되는 비트 맵이 더 작은 부분 (inSampleSize 옵션으로 디코딩되는 부분)에옵니다.

2

나는 하나를 제외하고 명확성을 위해 ...

options.inJustDecodeBounds = true;BitmapFactory.decodeStream(is, null, options);에 대한 호출이 비트 맵 정보를 얻을하지 않습니다하지만 경계 정보와 MIME 타입을 얻을 않는다는 것을 의미한다이 줄 또 다른 대답은 이미 권리로 받아 들여졌다 알고 .

당신은 다음 options.inJustDecodeBounds = false;을 설정하고 원하는 출력 크기 options. inSampleSize = [int]에 의해 결정 주어진 비율로 표본의 크기를 설정하여 비트 맵 데이터의 '리샘플링'버전을 얻을이 반환 값 outWidth, outHeightoutMimeType를 사용할 수 있습니다.

자세한 내용이 매우 유익한 페이지를 참조하십시오 : Loading Large Bitmaps Efficiently

관련 문제