2012-11-02 3 views
0

OutOfMemoryException을 피하기 위해 현재 비트 맵을 축소하고 있습니다. 디코딩 할 파일 크기를 지정하는 방법이 있습니까? 따라서 입력 이미지의 파일 크기에 관계없이 지정된 파일 크기로 축소됩니다.Bitmap을 특정 파일 크기로 디코딩하는 방법은 무엇입니까?

출력 파일 크기를 지정하는 방법을 알아낼 때까지 http://androidbysravan.wordpress.com/category/outofmemory-exception-when-decoding-with-bitmapfactory/에서 다음 코드를 사용하고 있습니다.

Bitmap bm = null; 
BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inSampleSize = 10; 
AssetFileDescriptor fileDescriptor =null; 
try { 
    fileDescriptor = _context.getContentResolver().openAssetFileDescriptor(selectedImage,"r"); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 
finally{ 
    try { 
     bm = BitmapFactory.decodeFileDescriptor(fileDescriptor.getFileDescriptor(), null, options); 
     fileDescriptor.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
return bm; 
} 
+2

파일 크기가 여기에 의미가 없습니다 (예 : , PNG, JPEG). – CommonsWare

답변

1

는 등 PNG, JPEG로 압축 된 형식입니다 디코딩 이미지 그래서 당신이 그들을 디코딩 할 때, 당신이 이해할 수있는 안드로이드 형식으로 메모리로 압축 해제되어 모든 일을. 디코딩 된 이미지의 크기를 제어 할 수는 없지만 BitmapFactory.Options 클래스를 사용하여 효율적으로 이미지를 디코딩 할 수있는 특정 속성을 제어 할 수는 있습니다. 여기에 제대로 효율적으로 이미지를로드하기 위해이 클래스를 사용하는 방법에 대한 우수한 공식 가이드의

: 이미지가 압축으로 파일에있을 때

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

+0

링크를 가져 주셔서 감사합니다, 나는 한 번 찍은 inSampleSize 높이 및 ImageView 함께 기반으로 비트 맵을로드 해요. – benkdev